2013-02-14 70 views
3

編譯我們的Qt項目時出現以下鏈接器錯誤。 我們不使用qmake。我們使用autoconf & automake的.. 現在移植到Mac帶來follwoing錯誤: 我一直在使用Qt的SDK,並試圖通過自己編譯的Qt ......但是都沒有成功:(Mac:體系結構x86_64的未定義符號:「QApplication :: palette()」,引用來自:

也許有人有一個想法

/bin/sh ../../libtool --tag=CXX --mode=link clang++ -g -O2 -Wl,-rpath - 

    Wl,/space/dev-libs/instantclient_10_2 -Wl,-rpath -Wl,/space/dev-libs/boost_1_53/lib -v -o showtime showtime-application_resources.o showtime-main.o cmdline.o ../../atcaf/atcafgui/libatcafgui.la 
libtool: link: clang++ -g -O2 -Wl,-rpath -Wl,/space/dev-libs/instantclient_10_2 -Wl,-rpath -Wl,/space/dev-libs/boost_1_53/lib -v -o showtime showtime-application_resources.o showtime-main.o cmdline.o -Wl,-bind_at_load ../../atcaf/atcafgui/.libs/libatcafgui.a -L/usr/local/Qt-5.0.1/lib /usr/local/Qt-5.0.1/lib/libQt5Widgets.dylib /usr/local/Qt-5.0.1/lib/libQt5Gui.dylib /usr/local/Qt-5.0.1/lib/libQt5Sql.dylib /usr/local/Qt-5.0.1/lib/libQt5Xml.dylib /usr/local/Qt-5.0.1/lib/libQt5XmlPatterns.dylib /usr/local/Qt-5.0.1/lib/libQt5Network.dylib /usr/local/Qt-5.0.1/lib/libQt5Core.dylib -L/space/dev-libs/log4cxx-dfs/lib /space/dev-libs/log4cxx-dfs/lib/liblog4cxx.dylib -L/usr/lib -laprutil-1 -lexpat -liconv -lpq -lsqlite3 -lldap -llber -lapr-1 -lpthread -L/space/dev-libs/boost_1_53/lib -lboost_python -lpython2.6 -L/space/dev-libs/instantclient_10_2 -lclntsh -lz 
Apple clang version 3.1 (tags/Apple/clang-318.0.58) (based on LLVM 3.1svn) 
Target: x86_64-apple-darwin11.4.2 
Thread model: posix 
"/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.7.4 -o showtime -lcrt1.10.6.o -L/usr/local/Qt-5.0.1/lib -L/space/dev-libs/log4cxx-dfs/lib -L/usr/lib -L/space/dev-libs/boost_1_53/lib -L/space/dev-libs/instantclient_10_2 -rpath /space/dev-libs/instantclient_10_2 -rpath /space/dev-libs/boost_1_53/lib showtime-application_resources.o showtime-main.o cmdline.o -bind_at_load ../../atcaf/atcafgui/.libs/libatcafgui.a /usr/local/Qt-5.0.1/lib/libQt5Widgets.dylib /usr/local/Qt-5.0.1/lib/libQt5Gui.dylib /usr/local/Qt-5.0.1/lib/libQt5Sql.dylib /usr/local/Qt-5.0.1/lib/libQt5Xml.dylib /usr/local/Qt-5.0.1/lib/libQt5XmlPatterns.dylib /usr/local/Qt-5.0.1/lib/libQt5Network.dylib /usr/local/Qt-5.0.1/lib/libQt5Core.dylib /space/dev-libs/log4cxx-dfs/lib/liblog4cxx.dylib -laprutil-1 -lexpat -liconv -lpq -lsqlite3 -lldap -llber -lapr-1 -lpthread -lboost_python -lpython2.6 -lclntsh -lz -lstdc++ -lSystem /usr/bin/../lib/clang/3.1/lib/darwin/libclang_rt.osx.a 

Undefined symbols for architecture x86_64: 

    "QApplication::palette()", referenced from: 
     _main in showtime-main.o 
    "QApplication::commitData(QSessionManager&)", referenced from: 
     vtable for Application in libatcafgui.a(libatcafgui_la-Application.o) 
    "QApplication::saveState(QSessionManager&)", referenced from: 
     vtable for Application in libatcafgui.a(libatcafgui_la-Application.o) 
    "QAbstractItemView::dataChanged(QModelIndex const&, QModelIndex const&)", referenced from: 
     vtable for LogTableWWU in libatcafgui.a(libatcafgui_la-moc_LogTableWWU.o) 
    "QWidget::styleChange(QStyle&)", referenced from: 

回答

2

我移植從Qt的4到5的Qt時也有類似的問題有缺少功能QApplication::commitData()QApplication::saveState()

我已經衍生自QApplication一類,在頭文件我改變

#include <QtGui/QApplication> 

#include <QApplication> 

,這解決了這個問題。

+0

謝謝,這個錯誤讓我瘋了!最糟糕的部分是,包含文件的子項目自己編譯了,但包括庫在內的每個項目都拋出了相同的錯誤! – 2016-04-06 12:02:52

0

我有同樣的問題,雖然雷是有關QWidget的功能(例如QWidget的:: styleChange(將QStyle &)QWidget的:: fontChange(QFont常量&))而非的QApplication。

至於建議的公案,我找了我的項目中的

#include <QtGui/ 

所有出現,並與

#include < 

這解決了這個問題取代了它們。我用clang和g ++版本(5.0.1和5.0.2)測試了它們,它們似乎都起作用。

注:

一些在網絡上找到解決方案的提出

QT += widgets 

添加到Qmake工程(的.pro)文件,因爲這可能與現有錯誤。雖然我不認爲增加這是一個問題,但它並沒有解決這個具體問題。

+0

他使用Qt 5,因此如果他使用小部件,他必須使用QT + =小部件。 – koan 2013-04-26 13:16:12

相關問題