我在'/Users/me/lib/qt-5.1.1/'中安装了Qt 5.1.1。在'/Users/me/lib/qt-5.1.1/5.1.1/clang_64/lib'下有所有框架,但构建一个简单的应用程序:
#include <QtGui>
#include <QMainWindow>
#include <qapplication.h>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QMainWindow mw;
mw.show();
return app.exec();
}
在规范步骤之后:
$qmake -project
$qmake
$make
链接器无法链接:
Undefined symbols for architecture x86_64:
"QMainWindow::QMainWindow(QWidget*, QFlags<Qt::WindowType>)", referenced from:
_main in main.o
"QMainWindow::~QMainWindow()", referenced from:
_main in main.o
"QApplication::exec()", referenced from:
_main in main.o
"QApplication::QApplication(int&, char**, int)", referenced from:
_main in main.o
"QApplication::~QApplication()", referenced from:
_main in main.o
"QWidget::show()", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [test.app/Contents/MacOS/test] Error 1
我添加了链接器标志
-F/Users/me/lib/qt-5.1.1/5.1.1/clang_64/lib -framework QtGui -framework QtCore
clang版本是:
$clang --version
Apple LLVM version 4.2 (clang-425.0.27) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix
有什么想法吗?
答案 0 :(得分:1)
qmake生成的项目可能不包含widgets
模块。
请检查您的.pro
文件。您不需要手动添加这些框架链接器标志。只需将模块添加到QT变量:
QT += widgets
Qmake有一个依赖项解析机制,因此如果添加小部件模块,core
和gui
模块将自动拉入。
请注意widgets
是Qt 5中的新模块。在Qt 4中,QWidget
层次结构是gui
模块的一部分。它已经分离出来,创建了一个轻量级的gui
模块。我的other answer解释了Qt 5中提供了哪些GUI框架。