【问题标题】:LNK1112 module machine type 'X86' conflicts with target machine type 'x64'LNK1112 模块机器类型“X86”与目标机器类型“x64”冲突
【发布时间】:2012-08-17 23:06:12
【问题描述】:

我正在使用 cmake-2.8.9-win32-x86。我想在 Visual Studio 2010 上构建 Qt qt-win-opensource-4.8.2-vs2010。我的电脑有 64 位系统。我认为由于 cmake 或 qt 都是 x86,因此我在构建时遇到了这个错误。 LNK1112 模块机器类型“X86”与目标机器类型“x64”冲突。

如何解决这个问题?

【问题讨论】:

  • 我怎样才能按照那里的说法更改平台?
  • 您可以通过仅让 CMake 找到您的构建目标的正确 Qt 来解决此问题。我的意思是,如果您在 CMake 中选择了 64 位构建,请确保它在您的路径中没有找到 32 位 Qt。这是行不通的。在 Windows 上,我通过将 32 位构建和 64 位构建保持在完全独立的树中来避免这个问题,并且我还打开了一个环境,其中 QTDIR 设置为我希望 CMake 找到的路径。
  • 谢谢 :) 实际上我在我的文件中找不到 64 位 Qt 并找到任何包含 64 位文件的下载链接。或者您能告诉我如何更改我的机器类型吗?
  • 在 cmake-gui 中重置缓存,然后不要选择 Visual Studio 2010 Win64 作为生成器类型。而是只选择 Visual Studio 2010

标签: visual-studio qt cmake


【解决方案1】:

错误告诉您链接器已使用指定 x64 的 target 运行,而链接器正在读取的模块是为 x86 创建的。出了什么问题取决于您要做什么。

如果您尝试创建 x64 代码文件,则链接器目标是正确的,而模块是错误的。如果您尝试创建 x86 代码文件,则链接器目标错误且模块正确。

无论哪一项是错误的,您都必须更正——通过更改链接器目标或更改模块。如果模块错误,您可能最终使用 x86 版本的编译器而不是 x64 版本来编译它。

【讨论】:

  • 谢谢你 :) 我认为你是完全正确的。但我不知道如何改变其中之一?你有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 2015-03-04
  • 2012-02-06
  • 2012-10-05
  • 1970-01-01
相关资源
最近更新 更多