致命错误 LNK1112:模块机器类型“x64”与通过 vcvarsall.bat x86 运行构建的目标机器类型“X86”冲突

Posted

技术标签:

【中文标题】致命错误 LNK1112:模块机器类型“x64”与通过 vcvarsall.bat x86 运行构建的目标机器类型“X86”冲突【英文标题】:fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86' running build via vcvarsall.bat x86 【发布时间】:2019-06-11 05:53:30 【问题描述】:

我正在尝试在 64 位操作系统上构建 32 位 exe。 我遵循的步骤:

    我运行了 Visual Studio 命令提示符 (2010),它为 x86 工具。(作为管理员)还尝试了“C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat x86" 我通过 nmake 运行了 makefile.nt。 我正在使用 32 位的 boost 库。 遇到错误

"libboost_thread-vc100-mt-1_50.lib(thread.obj):致命错误 LNK1112: 模块机器类型 'x64' 与目标机器类型 'X86' 冲突”

我知道我的操作系统是 64 位,我的目标机器是 X86,但是当我触发自动为 x86 设置环境变量的 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat x86 时,应该注意这个问题。

任何帮助将不胜感激。

【问题讨论】:

您链接的 Boost 库不是为 32 位目标构建的。您需要安装特定的 32 位版本的 Boost 并使用它。 @Someprogrammerdude:我通过 dumpbin /headers *.lib | 检查了 lib 文件findstr 机器它返回 x86 机器。 这就是错误的意思,“模块”(库)是为 64 位目标构建的。您是否安装了多个 Boost?您在构建中使用了正确的吗? 我刚刚检查过了。我使用了一个 boost lib 实例,是的,我使用的是正确的。 @Someprogrammerdude 谢谢输入。经过两天的调试。我发现我的解决方案中包含了多个 boost 库的安装。 【参考方案1】:

谢谢大家的意见。经过两天的调试。我发现我的解决方案中包含多个 boost 库的安装

【讨论】:

以上是关于致命错误 LNK1112:模块机器类型“x64”与通过 vcvarsall.bat x86 运行构建的目标机器类型“X86”冲突的主要内容,如果未能解决你的问题,请参考以下文章

致命错误 LNK1112:模块机器类型“x64”与通过 vcvarsall.bat x86 运行构建的目标机器类型“X86”冲突

致命错误 LNK1112:模块机器类型“x64”与通过 vcvarsall.bat x86 运行构建的目标机器类型“X86”冲突

LNK1112:模块机器类型“x64”与目标机器类型“x86”冲突-opencv 构建

尝试在 64 位机器上将 Detours.lib 编译为 32 位:LNK1112:模块机器类型“x86”与目标机器类型“x64”冲突

QtCreator上写的HelloWorld报错:LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突

Qt 模块错误 - QtOpenGL 中的 LNK 1112