构建一个最小的 Qt 控制台项目失败,出现一个神秘的链接器错误 LNK2001: Unresolved external Symbol

Posted

技术标签:

【中文标题】构建一个最小的 Qt 控制台项目失败,出现一个神秘的链接器错误 LNK2001: Unresolved external Symbol【英文标题】:Building a minimal Qt Console Project fails with a cryptic Linker Error LNK2001: Unresolved external Symbol 【发布时间】:2013-07-04 09:47:51 【问题描述】:

我正在尝试编译一个带有事件循环的最小 Qt 控制台应用程序和一个带有其构造函数的内联定义的自定义类,例如 https://***.com/a/4182144/1619432,并得到三个神秘的链接器错误(使用 Qt 4.8.1 和 MSVC 2010 Express C++):

main.obj:-1: error: LNK2001: Unresolved external symbol ""public: virtual struct QMetaObject const * __thiscall ....

使用 ::metaObject、::qt_metacast、::qt_metacall。

【问题讨论】:

【参考方案1】:
#include "main.moc"

就在 int main(...) 的上方是至关重要的。如果找不到该文件,请尝试清理项目/删除构建目录,运行 qmake,重新启动 Qt Creator 甚至整个系统。 这可能与环境变量中的路径有关(可能之前由不同的项目设置)。

另一个常见的原因似乎是在类声明中忘记了 Q_OBJECT 宏,或者如上,在包含它之后运行 qmake。

祝你好运!

【讨论】:

@BobbyDigital 我在询问时找到了解决方案。

以上是关于构建一个最小的 Qt 控制台项目失败,出现一个神秘的链接器错误 LNK2001: Unresolved external Symbol的主要内容,如果未能解决你的问题,请参考以下文章

将解决方案升级到 Windows 8.1 后出现神秘的构建错误

TFS 2018发布流程 - 神秘服务器重启“部署TestAgent”构建步骤

我尝试构建一个项目,但它继续失败并出现两个错误

构建一个嵌入 Qt 的最小系统并在 Qemu for x86 上运行

QT Creator 构建错误:转换为 COFF 期间失败

关于qt项目的问题