【问题标题】:Linker error in simple Qt C++ application简单 Qt C++ 应用程序中的链接器错误
【发布时间】:2016-12-09 21:47:28
【问题描述】:

我正在尝试在 Qt C++ 中编译一些相对简单的代码,但我收到以下链接器错误并且无法弄清楚问题所在。

main.obj:-1: erreur : LNK2019: 未解析的外部符号 “类 QUuid __cdecl uuid::fromString(类 QString const &)” (?fromString@uuid@@YA?AVQUuid@@ABVQString@@@Z) 在函数_main中引用

其他文件编译正常,但不知何故这两个(uuid.h/uuid.cpp)有这个错误。

另外,如果这是相关的,如果我在 Qt 编辑器中右键单击“uuid.cpp”并选择“编译”,我会收到此错误,其他 cpp 文件也不会发生此错误:

开始:"C:\Qt\Tools\QtCreator\bin\jom.exe" -f Makefile.Debug debug/uuid.obj 错误:目标调试/uuid.obj 不存在。

知道可能是什么问题吗?

uuid.h

#ifndef UUID_H
#define UUID_H

#include <stable.h>


namespace uuid {

QUuid fromString(const QString& s);

}

#endif // UUID_H

uuid.cpp

#include <stable.h>
#include "uuid.h"

namespace uuid {

QUuid fromString(const QString& s) {
    // ....
}

}

ma​​in.cpp

#include <stable.h>
#include "uuid.h"

int main(int argc, char *argv[]) {
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);

    QUuid test = uuid::fromString("f601c97e494a46a7b393bb0366e679a1");

    return app.exec();
}

【问题讨论】:

  • build 文件夹中的 makefile 已过期:这就是您无法将 uuid.cpp 编译成 uuid.obj 的原因。在项目上重新运行 qmake 或最好删除构建文件夹然后构建它。这个问题没有.pro文件是有缺陷的。
  • @KubaOber,是的,谢谢你删除构建文件夹,特别是 make 文件,是那里解释的解决方案 - stackoverflow.com/a/21933761/561309

标签: c++ qt linker linker-errors


【解决方案1】:

删除 build 文件夹,尤其是 make 文件,解决了这个问题。从 Qt Creator 运行 Clean 命令是不够的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多