构建一个最小的 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”构建步骤