Utilizzo la cpu di Windows 7 e x64. Significa che dovrei sempre compilare con l'opzione "x64" in Visual Studio? Che ne dici di "dll", posso usare x86 dll dall'applicazione x64? Probabilmente ci sono altre preoccupazioni?come sapere quale CPU usare in build (x86 x64 o AnyCpu)?
risposta
This article contiene una breve panoramica di ciascuna opzione.
Ecco una piccola citazione:
L'impostazione predefinita, qualsiasi CPU, significa che l'assemblea verrà eseguito nativamente sulla CPU è attualmente in esecuzione su. Significa che eseguirà come 64-bit su una macchina a 64-bit e 32-bit su una macchina a 32-bit. Se l'assembly viene chiamato da un'applicazione a 64 bit, verrà eseguito come un assembly a 64 bit e così via.
Se il progetto è impostato su x86, significa che il progetto è destinato a eseguito solo come processo a 32 bit. Una procedura a 64 bit non sarà in grado di chiamare in un assieme di assiemi come X86. I motivi per impostare il progetto come x86 includono dipendenze su DLL native che sono disponibili solo in a 32 bit o che effettuano chiamate native assumendo 32 bit. Le applicazioni e gli assembly contrassegnati per x86 possono ancora essere eseguiti su Windows a 64 bit. Comunque corrono sotto WOW64. Visual Studio stesso viene eseguito con questa modalità di emulazione poiché è un'applicazione a 32 bit.
L'impostazione del progetto su x64 specifica che l'assembly deve eseguire in Windows a 64 bit. Il tentativo di eseguire l'assembly su 32-bit Windows o chiamare l'assembly da un processo a 32 bit comporterà un errore di runtime .
generale, si dovrebbe usare AnyCpu
tutto il tempo.
Se si dispone di motivi specifici per prevedere problemi di compatibilità, è necessario scegliere x86 o x64 come appropriato.
Come indicato nei commenti, la dll costruita su architetture specifiche può richiedere di costruire l'assemblaggio in un certo modo. Questo sarà qualcosa che vorrete fare quando voi avete bisogno di, non altrimenti.
quando utilizzo l'arresto anomalo dell'applicazione AnyCpu per qualche motivo. l'opzione x86 funziona ... probabilmente a causa della dll usata .. – javapowered
Sì, alcuni driver 'OleDb' e' ODBC', per esempio, funzionano solo in modalità x86. –
@javapowered Sì se la tua DLL è specificatamente x86 o x64 usa il corrispondente. Ad esempio, stavo usando una DLL Oracle Access DB che era x86 e sono obbligato a compilare in x86. –
No ... la macchina su cui scrivi il tuo codice su/compila/crea il tuo software (EXE, DLL ...) non ha nulla a che fare con la domanda su quale target (x86/x64/Qualsiasi).
Se si desidera che il risultato della generazione venga eseguito ovunque, si utilizza x86 o AnyCPU. Se vuoi che il risultato sia eseguito su x64, allora usi x64.
Ci sono alcuni casi in cui è necessario utilizzare x86 o x64 - cioè quando si utilizza un componente (di terze parti?)/Libreria/DLL/ActiveX ecc. Nel progetto che è solo 32 bit (quindi x86) o solo 64 bit solo (quindi x64).
AnyCPU
è quello che generalmente consiglio. È possibile vedere questo problema discusso in profondità a this SO post.
L'unica preoccupazione è che non è possibile tornare indietro: non è possibile utilizzare un assieme x64 da un'applicazione x86. AnyCPU
allevia questa potenziale trappola.
- 1. Caricamento dell'assembly x86 o x64
- 2. Come sapere se un assembly .NET è stato compilato come x86, x64 o qualsiasi CPU
- 3. Come verificare a livello di programmazione se un assembly gestito è x86, x64 o AnyCPU?
- 4. AnyCPU/x86/x64 per l'applicazione C# ed è dipendenza C++/CLI
- 5. Quale pacchetto ridistribuibile VC++ da scegliere (x86 o x64)?
- 6. "AnyCPU" vs "Qualsiasi CPU" in TFS 2010
- 7. Allineamento struttura C++ x86/x64 + .NET AnyCPU Uso libreria C++ (chiamate/callback)
- 8. Visual Studio che carica la dll giusta (x86 o x64)!
- 9. Debug mancante | Qualsiasi configurazione di build della CPU per i progetti e impostazione predefinita Debug | x86 su Windows x64
- 10. Compilare un binario x64 C# .NET su un sistema x86
- 11. Compilazione per x86 e x64
- 12. Console.Writeline lavorando su x86, ma non x64
- 13. Come configurare una soluzione VS2012 per x86 e x64 contemporaneamente
- 14. Avvio MSI x86 o x64 da MSBuild bootstrapper
- 15. Aggiunta di librerie x86 e x64 al pacchetto NuGet
- 16. SWT x64 con xulrunner 3.6.28 x86
- 17. Force x86 CLR su un assembly .NET "Any CPU"
- 18. SQLite dll per architetture x86/x64
- 19. Configurare ASP.NET per utilizzare x86 su x64 Windows
- 20. Pacchetto NuGet singolo contenente file binari x86 ARM x64
- 21. Come faccio a sapere quale porta seriale usare su Linux?
- 22. Come posso suggerire dinamicamente una diramazione su una CPU x64?
- 23. . Gli assembly Net2 ospitati nell'app .Net4 hanno prestazioni migliori in x86 rispetto alla modalità AnyCpu?
- 24. Mod (%) operatore su x86 vs x64
- 25. TVarData Differenze tra x86 e x64 Delphi
- 26. Come sapere quale versione di cuDNN si dovrebbe usare?
- 27. Uso di x64 dll nell'applicazione x86
- 28. Come sapere quale tipo usare marshall da P/Invoke?
- 29. assembly x86 - Quale dimensione variabile da usare (db, dw, dd)
- 30. Quale usare, XMP o RDF?
Come determinare se le DLL sono disponibili solo a 32 bit? Inoltre, come si può sapere se il programma sta effettuando chiamate native assumendo 32 bit? –
@DanW, suggerisco di pubblicare una domanda. Fare una domanda del genere nei commenti non ti porterà molto lontano. –
Semplicemente più comodo averlo qui se anche altri si imbattono in questo problema. Ad ogni modo, penso che [questo] (http://stackoverflow.com/a/2418287/848344) farà il trucco. –