2011-02-25 75 views
0

我遇到了一個問題,我得到一個編譯程序的運行時錯誤。這在開發環境(x86)中正常工作,但在生產環境(x64)中不起作用。在x64上運行的.NET軟件,但在x86上編譯的任何CPU(VS2008)

我發現this文章,這似乎意味着將軟件編譯爲任何CPU都可以將軟件作爲x64軟件運行,如果它運行在64位環境中的話。

是這種情況,如果是這樣,軟件是否應該在任何CPU下編譯(因爲它似乎使兩個環境之間不匹配)?

+0

這完全取決於你在做什麼。如果不知道環境是什麼或者你得到什麼錯誤,很難給出建議。 – 2011-02-25 14:03:35

+0

錯誤不一致,範圍從程序凍結到內存訪問錯誤。 – 2011-02-25 14:08:37

+0

針對X64的Windows上的Windows ...不確定.NET引擎是否使用了該功能。 – 2011-02-25 14:52:35

回答

2

如果您僅使用託管代碼,AnyCPU非常棒。託管代碼可以在32位進程或64位進程中執行。使用AnyCPU,框架會選擇操作系統原生的位數。

對於非託管代碼也是如此。它需要編譯爲32位或64位代碼。當然,由於WoW64子系統,64位Windows可以運行64位進程。

但64位進程無法加載32位模塊(DLL,OCX等)。

這意味着如果您的程序使用某種非託管模塊,最好手動設置位數以便所有組件具有相同的位數。

相關問題