【发布时间】:2012-02-06 20:18:29
【问题描述】:
我使用 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 命令确定的定义。然而我可能是错的。
【问题讨论】:
-
不要摆脱WIN32,即使编译64位代码它仍然是Win32 API,所以你需要定义WIN32。
标签: visual-studio-2010 64-bit preprocessor linker-errors