【问题标题】:fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64' for 2010致命错误 LNK1112:模块机器类型“X86”与 2010 的目标机器类型“x64”冲突
【发布时间】: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

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

【问题讨论】:

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

标签: c++ visual-studio-2010 linker


【解决方案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 二进制文件。

    【讨论】:

      猜你喜欢
      • 2011-04-03
      • 2012-02-06
      • 2021-08-10
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      相关资源
      最近更新 更多