【问题标题】:mingw32 linker error when including QDebug包含 QDebug 时的 mingw32 链接器错误
【发布时间】:2012-08-05 15:18:48
【问题描述】:

我有这个最小的例子:

QT -= gui
CONFIG += qt console
SOURCES += main.cpp

#include <QDebug>

int main(int argc, char** argv)
{
    return 0;
}

在构建项目时会出现此链接错误

c:/qtsdk/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe:最终链接失败:无效论据

链接命令如下所示:

g++ -Wl -Wl -Wl,-subsystem,console -mthreads -o debug\test.exe debug/main.o -L"c:\QtSDK\Desktop\Qt\4.8.1\mingw\lib" - lQtCored4

我的设置:

  • Windows XP SP3
  • Qt SDK 1.2.1 版(QtCreator 2.4.1,Qt Desktop 4.8.1 版)(在C:\QtSDK\ 全新安装)
  • MinGW32 版本 4.4.0(包含在 Qt SDK 中 C:\QtSDK\mingw\

如果我删除#include &lt;QDebug&gt;,它编译得很好。如果我包含其他一些 Qt 头文件,例如 QCoreApplication,它也可以正常编译。

编辑:这是一个非常奇怪的最小示例。考虑一个像上面这样的空主函数。现在如果我把这些包含,它无法链接:

#include <QWidget>
#include <QVariant>

但如果我删除 其中一个,它会链接而不会出错。

有什么问题?为什么 mingw 不告诉我无效参数是什么

【问题讨论】:

    标签: windows qt linker mingw


    【解决方案1】:

    我想知道链接器是否找不到 lQtCored4 库?真的是在-L目录下吗?

    【讨论】:

    • 似乎是这种类型的问题,但我想知道为什么错误只在包含QDebug时出现,而不是另一个Qt头。我刚刚注意到 Qt SDK 已经包含 MinGW 4.4。我想我搞砸了设置中的工具链。我目前完全卸载并重新安装了整个 Qt SDK,如果问题仍然存在,我会报告。 (我已经花了 2 个小时解决这个错误,所以我没有任何耐心去寻找和纠正错误的设置......)
    • 重装Qt SDK后,问题依旧。请注意,#include &lt;QDebug&gt; 的前置/缺失不会更改链接应用程序时正在执行的命令。我真的无法解释错误的含义,因为错误消息没有解释 what's wrong 的参数。
    • 我添加了另一个我真的无法解释的最小示例(请参阅问题中的编辑)。
    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    相关资源
    最近更新 更多