我想为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