2010-01-15 119 views
1

我想爲x86構建一個庫(poco-1.3.6p2-all,值得的)。我剛剛安裝了一臺新的(乾淨的)Windows 7 64位機器,並安裝了Visual Studio 2008 Standard。在此框上安裝的任何內容都沒有安裝錯誤。在x64(Visual Studio 2008)環境中構建x86代碼?

在安裝了VS 2008 Standard的Windows XP 32位系統上,該庫完美無瑕地構建完成。哦,是的,這都是非託管的C++。

我得到的錯誤是在項目中各個DLL的每個鏈接上。示例:

1>.\obj\debug_shared\CppUnitException1.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86' 

問題庫是從.cmc文件構建腳本調用的.vcproj文件構建的。

編譯器選項(命令行)看起來像:

/Od /I "include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "CppUnit_EXPORTS" /D "_CRT_SECURE_NO_DEPRECATE" /D "_VC80_UPGRADE=0x0710" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /GF /FD /EHsc /RTC1 /MDd /Fo".\obj\debug_shared/" /Fd".\obj\debug_shared/vc80.pdb" /W3 /nologo /c /ZI /errorReport:prompt 

在項目選項鍊接器命令行看起來像:

/OUT:"..\bin\CppUnitd.dll" /INCREMENTAL /NOLOGO /DLL /MANIFEST /MANIFESTFILE:".\obj\debug_shared\CppUnitd.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"..\bin\CppUnitd.pdb" /DYNAMICBASE /NXCOMPAT /IMPLIB:"..\lib\CppUnitd.lib" /MACHINE:X86 /ERRORREPORT:PROMPT 

看來(我)鏈接器看到的x86目標文件,但正在以x64模式調用,即使命令行選項正確。

我需要的目標是一個32位/ x86類型,而不是x64。

是否有一些Visual Studio選項可以解決這個問題?

回答

1

右鍵單擊VS中的項目,進入屬性。找到生成選項卡,並確保「平臺目標」設置爲「x86」。

+0

哪裏?我沒有看到任何標籤或任何部分稱爲生成。在屬性|中鏈接器|高級選項,Target Machine被設置爲MachineX86。 – 2010-01-15 21:41:38

+0

C++解決方案的可能性不同於C#。還有哪些可用的? – 2010-01-15 22:14:43

+0

對於鏈接器選項,這是看起來相關的唯一選項。 – 2010-01-15 22:22:52

0

我想我應該把這個問題放在牀上。我擺弄了系統配置中的一些東西(比如路徑變量),並且後續版本正確地運行,IE瀏覽器,我最終用32位的OBJ文件正確鏈接到DLL。

我不確定哪些變化影響了構建。因此,從「乾淨」的完整版本現在起作用,但我不知道我改變了它的功能。從零開始重新構建我的系統(包括硬件)並重新安裝所有內容後,我感到疲憊不堪。所以可能我忽略了一些顯而易見的東西(比如構建之前的「vsvars32」調用),make文件讓我不滿意的默認值。

0

那麼我想早點回答,但沒有機會。所以問題出在我的Visual Studio安裝上。不知何故,安裝並沒有安裝x86編譯器和一些相關的DLL。一旦我重新安裝它的工作。而且使用的正確編譯器是x86而不是交叉編譯器。

0

我有一個解決方案,但也許不能解決您的問題。現在

,我的方式來解決同樣的問題

(in Visual Studio) Project -> Properties -> C/C++ -> Optimization -> Inline Function Expansion = Default 

我做到了,我的問題已經解決了。

相關問題