【问题标题】:LNK1112: module machine type 'x64' conflicts with target machine type 'X86': Qt creatorLNK1112:模块机器类型“x64”与目标机器类型“X86”冲突:Qt 创建者
【发布时间】:2015-03-04 15:24:18
【问题描述】:

我有一个在 linux 上运行的应用程序,我想在 Windows 上导入它。我已经设置了所有库并对 .pro 文件进行了更改。现在,当我尝试构建项目时,出现此错误:

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

我不确定是什么导致了这个问题。我使用的是 32 位 Qt 创建器。我知道有几个链接谈论更改项目属性,但所有这些都与在 Visual Studio 中更改它们有关。我正在使用 Qt 创建者并通过 Qt UI 运行项目。因此,如果必须解决此问题,我不确定必须通过 Qt 对项目属性进行哪些更改。

【问题讨论】:

  • Somwwhere,必须调用 Micorosft 编译器和链接器命令行。看看 MS 链接器的命令行是什么。
  • @PaulMcKenzie 是的,Qt 在某处使用 VS10 编译器来构建项目。我不确定必须在哪里进行更改。
  • 从未使用过 Qt creator,但修复方法是进入链接器命令行并修复“MACHINE”选项以使用X86。抱歉,我帮不上什么忙了。

标签: c++ qt qt4 qt-creator


【解决方案1】:

我遇到了同样的问题,但我的场景有点不同,我的目标是 x64 架构,当我将其更改为 x86 时出现此错误,我花了一些时间才发现我必须重新构建项目以匹配 CPU 架构。

【讨论】:

    【解决方案2】:

    很明显,您正在为 32 位目标进行编译,但您的某些库是 64 位的,这很可能您已经知道了。

    确保 Qt Creator 为您的特定项目使用正确的编译器(VC++、MinGW)和机器模型(32、64 位)。

    1. 打开你的项目

      File -> Open File or Project... -> ... -> yourproject.pro
      
    2. 检查 Qt Creator 是否自动检测到符合您库的机器模型的编译器。

      Tools -> Options -> Build & Run -> Kits
      
    3. 为您的项目选择(定义)所需的构建工具包和其他设置。

      Select "Projects" from the left panel.
      In the upper pane is shown the associated Kits for your project.
      You can add more Kits with the "Add Kit v" button.
      Hovering the mouse over the associated Kits, a little arrow is shown.
         Clicking on it provides operations to apply to the Kit.
      You can change or remove the Kit from your project following this little arrow.
      
    4. 根据新信息生成新的 Makefile。

      Build -> Run qmake
      
    5. 从头开始重建。

      Build -> Rebuild All
      

    【讨论】:

      【解决方案3】:

      我看到这篇文章是不久前的,但我刚刚遇到了同样的问题,这可能是其他人再次遇到此问题的解决方案。我有不同的设置,但我得到了同样的错误。

      我的应用程序在装有 Visual Studio 2019 的 Windows 上运行,我需要我的应用程序在 x64 和 x86 配置中正常工作。当我尝试在 x86 中运行我的项目时遇到了这个错误。这是我的解决方案。

      1. 转到项目的“属性”页面
      Project -> <ProjectName> Properties
      
      1. 检查您的 Qt 项目设置
      Configuration Properties -> Qt Project Settings
      
      1. 确保您在
      2. 下指向正确的 Qt 安装
      General -> Qt Installation
      

      您可以通过检查 Qt VS Tools Extension for VS 中的 Qt 选项来检查这一点。如果您没有它,请确保添加它。我说“Qt5.13.2”对我来说是指向 Qt 的 x64 构建,但它需要指向 x86 构建。

      1. 要更改此设置,您需要创建一个指向 x86 构建的 Qt 版本,并将 Qt 项目设置中的 Qt 安装更改为指向该版本。
      Extensions -> Qt VS Tools -> Qt Options
      
      1. 在 Qt 版本选项卡下,检查属性表指向的 Qt 版本。如果您的配置不正确,您可以在此处创建另一个配置。

      按添加按钮“添加新的 Qt 版本”

      Build Host: Windows
      Version name: <give it a name> (I did "Qt5.13.2_86")
      Path: <Path to correct build> (mine was "C:\Qt\Qt5.13.2\5.13.2\msvc2017")
      compiler: msvc (automatically sets to this when selecting Windows for the Build Host)
      

      按确定

      1. 现在回到项目属性表中配置属性中 Qt 项目设置下的 Qt 安装,并使其指向正确的 Qt 版本(我的版本来自“5.13.2”->“5.13.2_86”)。

      这是我针对不同问题但相同错误的解决方案。

      【讨论】:

        【解决方案4】:

        当我尝试使用 MSVC 2017 为 x64 机器构建时,我在 Qt Creator 中遇到了同样的问题。不知何故,链接器总是使用 x86 目标机器配置并失败。

        我注意到正在调用 /x86/ 目录中的 link.exe。某处路径被“卡住”了。搜索了一段时间后,我在 /MY PROJECTS BUILD DIRECTORY/CMakeCache.txt 文件中发现了几个不正确的路径。这个文件的头表明它是由CMake生成的:C:/Qt/Tools/CMake_64/bin/cmake.exe。

        在该文件中将所有相关的“x86”替换为“x64”,并重建项目后,问题就消失了。

        【讨论】:

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