Qt |是否可以同时使用声明性和快速模块?



我有Qt5项目,成功编译对shared Qt库,但我得到了很多错误(约130个错误)像* error: multiple definition of 'XXX'时编译它对static Qt库:

/usr/local/Qt-5.3.0/lib/libQt5Quick.a(qquickanimation.o): In function `_q_interpolateShortestRotation(double&, double&, double)':
qquickanimation.cpp:(.text+0x330): multiple definition of `_q_interpolateShortestRotation(double&, double&, double)'
/usr/local/Qt-5.3.0/lib/libQt5Declarative.a(qdeclarativeanimation.o):qdeclarativeanimation.cpp:(.text+0xd80): first defined here
/usr/local/Qt-5.3.0/lib/libQt5Quick.a(qquickanimation.o): In function `_q_interpolateClockwiseRotation(double&, double&, double)':
qquickanimation.cpp:(.text+0x3c0): multiple definition of `_q_interpolateClockwiseRotation(double&, double&, double)'
/usr/local/Qt-5.3.0/lib/libQt5Declarative.a(qdeclarativeanimation.o):qdeclarativeanimation.cpp:(.text+0xe10): first defined here

几乎所有成对检测到的多重定义:

  • libQt5Declarative, libQt5Quick
  • libQt5Declarative, libQt5Qml

我需要libQt5Declarative只使用MessageDialog在我的qml

我的.pro文件:

QT       += quick declarative widgets network xml xmlpatterns multimedia
TARGET = MyApp
TEMPLATE = app
SOURCES += ...
HEADERS  += ...
OTHER_FILES += ...
RESOURCES += ...
CONFIG += static

我的问题是:

  • 为什么它成功编译对共享Qt,但失败时,我编译对静态Qt?
  • 可以同时使用声明性和快速模块吗?
  • 我自己编译了静态Qt库,也许我做得不正确,Qt有官方的静态库包吗?

Qt Declarative是为兼容Qt 4而提供的。我认为它不是为了与新的Qt 5项目相关联而设计的。它似乎已经被Qt QML和Qt Quick所包含。

静态库无法指定哪些符号可以导出,哪些不可以导出,因此在两个不同的静态库中定义的相同私有符号可能会冲突。

相关内容

  • 没有找到相关文章

最新更新