Mac:架构x86_64的未定义符号:“QApplication :: palette()”,引自:

时间:2013-02-14 14:10:59

标签: macos qt

编译Qt项目时,我收到以下链接器错误。 我们不使用qmake。我们使用autoconf& automake的.. 现在移植到Mac会带来以下错误: 我尝试过使用Qt-SDK并自己编译Qt ......都没有用:(

也许有人有想法?

    /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 个答案:

答案 0 :(得分:2)

从Qt 4移植到Qt 5时遇到了类似的问题。QApplication::commitData()QApplication::saveState()缺少函数。

我从QApplication派生了一个类,在我更改的头文件中

#include <QtGui/QApplication>

#include <QApplication>

这解决了这个问题。

答案 1 :(得分:0)

我遇到了同样的问题,虽然我的问题与QWidget函数有关(例如 QWidget :: styleChange(QStyle&amp;) QWidget :: fontChange(QFont const&amp;)而不是QApplication。

根据 koan 的建议,我查找了所有出现的

#include <QtGui/
在我的项目中

并用

替换它们
#include <

解决了这个问题。我用clang和g ++版本(5.0.1和5.0.2)测试了它们,它们似乎都有效。

注意:

网上发现的一些解决方案建议添加

QT += widgets

到qmake项目(.pro)文件,因为这可能与现有错误有关。虽然我不认为添加这个是一个问题,但它没有解决这个具体问题。