【问题标题】:Qt error: LNK1181: cannot open input file 'debug\main.obj'Qt 错误:LNK1181:无法打开输入文件 'debug\main.obj'
【发布时间】:2013-09-04 02:00:22
【问题描述】:

Qt creator 运行良好,但突然出现问题error: LNK1181: cannot open input file 'debug\main.obj'
无论GUIconsole,任何类型的应用程序都会出现此问题。
我已经卸载了Qt,然后重新安装,但问题仍然存在。
我没有在 Qt creator 设置中做任何事情,我保留了默认设置。

以下应用程序是简单的控制台应用程序,其中出现相同的问题。

//main.cpp
#include <QCoreApplication>

int main(int argc, char *argv[]){
    QCoreApplication a(argc, argv);

    return a.exec();
}

注意:我使用的是 Qt 5.1.1 for Windows 32 位(VS 2010,OpenGL)。

【问题讨论】:

  • 这很可能是由 project 设置中的错误引起的。源文件 (*.cpp) 被编译成目标文件 (*.o),然后它们都链接在一起。不知何故,链接器无法找到从源文件编译的目标文件。我可以说它正在调查调试\,但它们被存储在其他地方。你有那个目录的写权限吗?
  • @brunocodutra:我正在使用Windows 7 32bit
  • 我所说的仍然适用于Windows,但不幸的是我对它不是很熟悉,特别是在编程方面。
  • 那么您在 windows 7 上使用 qt addin for visual studio 2010 吗?

标签: c++ qt qt5


【解决方案1】:

如果您的项目路径(任何文件夹的名称)包含空格,也会出现此问题。

【讨论】:

  • @kayleeFrye_onDeck 如果您无法更改项目路径,也许您可​​以重写构建步骤并将项目路径放在 qoutes 中?或者编写一个不使用 QtCreator 来构建项目的脚本?除此之外我不知道。
  • @kayleeFrye_onDeck 恐怕Qt Creaor根本不支持项目路径中的空格。创建新项目时,您被明确告知要删除空格。对不起
  • 不用道歉! :) 这是 Visual Studio 的默认项目路径已经包含空白的少数情况之一,这使得 Qt Creator 对于这样一个基本的东西看起来相当不成熟。
  • 看来这里的罪魁祸首其实是JOM。如果您在“构建”选项卡中转到 Qt Creator 的“项目”部分,您可以看到 QMAKE 在它运行的项目文件周围添加了引号,但 JOM 没有。此外,似乎没有办法在不破坏 Qt 检测目录的能力的情况下在这些字段中注入引号。我想我找到了解决这个问题的方法,但我需要进行更多测试。
  • @kayleeFrye_onDeck 谢谢你分享这个。我会记住这一点:)
【解决方案2】:

如果您在 .pro 或 .pri 文件中有类似的内容,也会出现此问题:

标题 += \ \

来源 += \ \

【讨论】:

    【解决方案3】:

    好的,我们终于有了这个普遍问题的真正答案,而不是 OP 的错字问题,如果这也没有解除您的障碍的话。

    实际问题(黑盒透视图):“构建目录”自动填充的条目会中断空白目录中的项目。 Qt Creator 实际上禁止您并告诉您在创建新项目时不要使用空格。您仍然可以关闭一个新项目并重新命名它以添加空格,Qt Creator 会优雅地处理它。如果您复制构建目录,即使其中包含空格,并将其粘贴到替换损坏的自动生成路径的字段中(我的是使用相对路径),那么 JOM 将开始正常工作,因为 QMake 不会生成任何错误。我不能代表其他 Make 工具。

    1. 使用空格制作或克隆您的项目
    2. 在 Qt Creator 中加载它
    3. 运行 QMAKE
    4. 选择左侧的“项目”按钮
    5. 确保您位于“构建”标签中
    6. 选择“浏览”,然后重新选择QMAKE制作的影子目录

    如果删除旧的 QMAKE 生成的文件夹不是一个简单的问题,那应该可以解除阻止,这是人们在 Qt Creator 中开发时遇到此特定错误的最常见问题。

    【讨论】:

      【解决方案4】:

      因为这个我得到了错误:

      HEADERS += \ \
          $$PWD/QOakTreeViewRecursiveModel.h
      

      代替:

      HEADERS += \
          $$PWD/QOakTreeViewRecursiveModel.h
      

      【讨论】:

        【解决方案5】:

        问题已解决。

        问题的原因是在创建一个新项目(GUIConsole)时,属于这个新项目的所有源文件都使用了错误的扩展名,例如:main.cp,但正确的扩展名应该是例如:main.cpp。 当将所有源文件扩展名从.cp 更改为.cpp 时工作正常。

        或者从[Tools -> Option -> C++]更改默认源文件扩展名。

        【讨论】:

          【解决方案6】:

          什么对我有用:

          1. 关闭 Qt Creator
          2. 删除项目目录中的 [filename].pro.user 文件
          3. 再次打开项目,让Qt自行配置

          通常,每当我遇到这样的错误时,这是​​我首先要做的事情之一,因为它解决了 Qt 的许多问题。

          编辑:这当然会重置您的项目构建位置。

          【讨论】:

          • 我在更新 qtcreator 后出现了这个问题,这个解决方案解决了它。
          • 这个解决方案解决了我的问题
          • 这不是解决这个问题的正确方法并且仍然面临同样的问题
          【解决方案7】:

          hmm 如果我没记错的话,当我使用运行 QMAKE 的类似设置(QtCreator 和 Windows)遇到此类问题时,再次重建项目帮助我解决了此链接器错误。

          【讨论】:

          • 谢谢,你说的我都做了,但问题没有解决,但是按照我之前的解释,问题已经解决了。
          【解决方案8】:

          运行 CleanqMakerebuild
          我喜欢这个问题,这对我有帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-20
            • 2014-06-19
            • 1970-01-01
            • 1970-01-01
            • 2014-07-14
            • 1970-01-01
            相关资源
            最近更新 更多