2011-08-31 101 views
2

因此,我們有一個用於編譯爲「任何CPU」的應用程序。它將在Windows 7機器上以64位模式運行,但當它嘗試調用以32位模式運行的互操作時會出錯。在Windows 7中以32位運行應用程序

我經歷了並且將編譯目標更改爲目標爲該項目的x86,編譯並在本地運行它,並且它工作正常。

但是,如果提交此更改,它仍會在生產中的Windows 7計算機上以64位運行。

當我進行更改時,我只是在VS2010中打開配置管理器,將其更改爲x86,保存它,併爲解決方案中的每個項目提交更改。

我怎樣才能讓它在32位模式下運行?我需要改變其他東西嗎?

+2

問:您是否將所有配置更改爲x86,而不僅僅是調試配置? – nos

+0

你怎麼知道你的應用程序是以64位的方式運行的? –

+0

您不需要爲解決方案中的每個項目執行此操作,只需執行該操作即可。該DLL將從它們的加載它們的exe文件中引導 –

回答

4

這是VS2010中的一個不幸陷阱,配置管理器中的「活動解決方案平臺」設置與託管的C#和VB.NET項目無關。對於C#,您必須使用Project + Properties,Build選項卡和Platform目標設置。只有啓動(EXE)項目中的設置很重要。

+0

我會給這個鏡頭。 – slandau

5

要在SDK

corflags MyApp.exe /32bit+ 

corflags工具將改變EXE爲32位進程運行。

相反

corflags MyApp.exe /32bit- 

會改變的exe是AnyCPU

corflags MyApp.exe 

會告訴你什麼是在exe文件頭,所以你可以看到它是怎麼回事的目標。

+0

謝謝,這有助於 –

相關問題