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 официальный пакет статических библиотек?

0

Решение

Декларативный Qt предоставляется для совместимости с Qt 4. Я предполагаю, что он не предназначен для связи с новыми проектами Qt 5. Похоже, что он был включен в Qt QML и Qt Quick.

Статические библиотеки не имеют возможности указать, какие из их символов экспортируются, а какие нет, поэтому идентичные частные символы, определенные в двух разных статических библиотеках, могут конфликтовать.

1

Другие решения


По вопросам рекламы [email protected]