The*_*ane 1 64-bit preprocessor linker-errors visual-studio-2010
我使用Visual Studio 2010 Premium.我有两个项目A和B,我尝试将它们编译为64位平台.
项目A输出项目B依赖的.dll和.lib文件.
我已经成功地将项目A编译到64位平台,但是当我编译项目BI时会出现以下错误:
mfcs100d.lib(nolib.obj):致命错误LNK1112:模块机器类型'X86'与目标机器类型'x64'冲突
可能是什么问题呢 ?我真的不知道这个mfcs100d.lib文件是什么.
我在项目A的dll文件上使用了"Dependency Walker",它似乎完全依赖于64位dll文件.另外,我进入了项目B(属性页 - >配置属性 - >链接器 - >高级)并确认'目标机'设置为"MachineX64".此外,在配置管理器上,平台设置为x64.
有人告诉我问题可能是这样的:
转到项目B(属性页 - >配置属性 - > C\C++ - >预处理器 - >预处理器定义)我有以下值:
WIN32
_DEBUG
_WINDOWS
_AFXEXT
Run Code Online (Sandbox Code Playgroud)
那是真的相关吗?我应该更换'WIN32'值吗?如果是的话,怎么样?我真的不明白这些定义的含义以及如何改变它们.
编辑:我刚刚意识到它可能完全不相关.这些只是预处理器的定义,例如可以通过C++ #define命令确定的定义.但我可能是错的.
很难弄错.从Build + Configuration Manager开始,仔细检查是否为两个项目选择了x64.下一步是验证库搜索路径.右键单击项目,"属性","VC++目录","库目录".单击组合框箭头以查看"继承的值".$(VCInstallDir)atlmfc\lib\amd64应该是列表中的第二个,这是64位版本的mfcs100d.lib所在的位置.