clang无法链接到Mac OS X上的Qt 5.1.1框架

时间:2013-10-14 19:08:48

标签: qt clang clang++

我在'/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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

qmake生成的项目可能不包含widgets模块。

请检查您的.pro文件。您需要手动添加这些框架链接器标志。只需将模块添加到QT变量:

QT += widgets

Qmake有一个依赖项解析机制,因此如果添加小部件模块,coregui模块将自动拉入。

请注意widgets是Qt 5中的新模块。在Qt 4中,QWidget层次结构是gui模块的一部分。它已经分离出来,创建了一个轻量级的gui模块。我的other answer解释了Qt 5中提供了哪些GUI框架。