致命错误 LNK1112:模块机器类型“X86”与 2010 的目标机器类型“x64”冲突

Posted

技术标签:

【中文标题】致命错误 LNK1112:模块机器类型“X86”与 2010 的目标机器类型“x64”冲突【英文标题】:fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64' for 2010 【发布时间】:2013-01-20 04:57:07 【问题描述】:

我正在尝试运行一个示例应用程序。此应用程序适用于 32 位机器。但我想在 64 位机器上运行它,但出现以下错误:

AFE\AnyFirewallEngine\Unicode Debug\AfBenchmark.obj:致命错误 LNK1112:模块机器类型“X86”与目标机器类型“x64”冲突

我在这里使用了两个第三方库 1. 打开ssl-0.9.8e 2. 提升

已经为 64 位构建。

我的编译器是visual studio 2010

请帮帮我........

【问题讨论】:

试试这个:***.com/a/4364020/1064610 你能澄清一下“想要”的说法吗?您想在 64 位操作系统上运行 32 位应用程序(这意味着什么都不做,顺便说一句),还是想编译您之前构建的 32 位应用程序源代码到 64 位 target 并在 64 位操作系统上运行? 您是否正在尝试构建一个将在 64 位机器上运行的 32 位应用程序?或者您正在尝试构建一个 64 位应用程序?您不能将 32 位可执行文件、库或 DLL 与 64 位可执行文件、库或 DLL 链接。 我想在 64 位操作系统上构建 32 位应用程序 那么你需要使用 32 位构建的库,而不是 64 位构建。 【参考方案1】:

在我的情况下,openssl 1.0.2d 遇到了同样的问题:

fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

当我运行vcvars64.bat insted of vcvars32.bat 时问题解决了。 在 VS15 中它位于:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat

然后我可以毫无问题地运行 ms\do_win64a 和 nmake -f ms\nt.mak

【讨论】:

【参考方案2】:

您显然至少使用了one other third party library,并且您尝试链接的二进制文件是为 x86 构建的。您必须找到或生成 AFE 的 x64 二进制文件。

【讨论】:

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

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

麻烦构建旧版本的 SIP:致命错误 LNK1112:模块机器类型“x64”与目标机器类型“X86”冲突

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

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

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

Qt 模块错误 - QtOpenGL 中的 LNK 1112