我使用的是Visual Studio 2010 Premium。我有两个项目A和B,我尝试将它们编译为64位平台 项目A输出项目B依赖的.dll和.lib文件 我已经将项目A成功编译到64位平台,但是当我编译项目B时,我收到以下错误:
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
这真的有关系吗?我应该更换'WIN32'值吗?如果是的话,怎么样?我真的不明白这些定义的含义以及如何改变它们。
编辑:我刚刚意识到这可能根本没有关系。这些只是预处理器的定义,例如可以通过C ++ #define命令确定的定义。但我可能是错的。
答案 0 :(得分:5)
很难弄错。从Build + Configuration Manager开始,仔细检查是否为两个项目选择了x64。下一步是验证库搜索路径。右键单击项目,“属性”,“VC ++目录”,“库目录”。单击组合框箭头以查看“继承的值”。 $(VCInstallDir)atlmfc \ lib \ amd64应该是列表中的第二个,这是64位版本的mfcs100d.lib所在的位置。
答案 1 :(得分:2)
添加x64目标时,请进入常规设置,然后查看输出目录和中间目录。对于Debug目标从“Debug”更改为“Debug64”,Release目标也是如此。