3

编译我们的 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:
4

2 回答 2

2

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

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

#include <QtGui/QApplication>

#include <QApplication>

这解决了这个问题。

于 2013-03-09T14:15:08.447 回答
0

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

正如koan所建议的,我查找了所有出现的

#include <QtGui/

在我的项目中并将它们替换为

#include <

这解决了这个问题。我使用 clang 和 g++ 版本(5.0.1 和 5.0.2)对此进行了测试,它们似乎都可以工作。

笔记:

在网上找到的一些解决方案建议添加

QT += widgets

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

于 2013-04-26T12:08:51.973 回答