我想爲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選項可以解決這個問題?
哪裏?我沒有看到任何標籤或任何部分稱爲生成。在屬性|中鏈接器|高級選項,Target Machine被設置爲MachineX86。 – 2010-01-15 21:41:38
C++解決方案的可能性不同於C#。還有哪些可用的? – 2010-01-15 22:14:43
對於鏈接器選項,這是看起來相關的唯一選項。 – 2010-01-15 22:22:52