clang未能在Mac OS X上与Qt 5.1.1框架链接

问题描述:

我在'/Users/me/lib/qt-5.1.1/'中安装了Qt 5.1.1。在 '/Users/me/lib/qt-5.1.1/5.1.1/clang_64/lib' 有全框架,而是构建一个简单的应用程序:典型步骤后clang未能在Mac OS X上与Qt 5.1.1框架链接

#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 --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 

任何想法?

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

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

QT += widgets 

QMAKE具有相关解决机制,因此,如果您添加小部件模块,该coregui模块将自动被拉动。

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

+0

谢谢,它的工作原理...我不知道新模块的“小工具”。我认为'gui'和'core'就足够了。但是,我看到这两个模块自动拉入,而不需要在'.pro'文件中指定'widgets'模块。 – MirkoBanchi