Qt 子项目未定义对“main”的引用

Qt sub-project undefined reference to `main'

我正在学习使用 Qt 的模型-视图-呈现器 (MVP) 模式,并且有follow example。我可以构建它并从构建文件夹 运行 它,但由于错误无法调试它:

.../glibc-2.19/sysdeps/x86_64/start.S:118: error: undefined reference to `main'
error: collect2: error: ld returned 1 exit status

我不知道怎么了?快速 Google 搜索不会提供太多信息。 PS: 我使用 OpenSUSE 13.1 和 Qt 4.8

您使用的 subdirs 模板有误。它不应包含任何内容,但 SUBDIRS,有时 CONFIG += ordered。您的项目模型也有点复杂。你应该先尝试一些更简单的东西,没有库和子项目。

子目录项目的好例子:How to use QMake's subdirs template?

更新

我会稍微解释一下。为了编译 & link:

,您需要在项目中进行最少的更改
  1. WiringClone.pro
  2. 中删除 SOURCES = $$PWD/Presenter/main.cpp
  3. CONFIG += ordered 添加到 WiringClone.proView.pro
  4. WiringClone.pro 中删除 config \ 行(这是导致原始 link 错误的那一行)
  5. 订购子项目。 WiringClone.pro: Utilities Model View Presenter, View.pro: Logic GUI

但是,即使在所有这些更改之后,您仍必须解决一个无法解决的问题:您的 Utilities 库依赖于您的 Model 库,但是您的 Model 依赖于您的 Utilities。链接不能以这种方式工作。不允许循环依赖。这就是为什么我建议您放弃所有库并首先编写一个简单可靠的可执行文件。