я имею 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
только для использования MessageDialog
в моем qml
мой .pro
файл:
QT += quick declarative widgets network xml xmlpatterns multimedia
TARGET = MyApp
TEMPLATE = app
SOURCES += ...
HEADERS += ...
OTHER_FILES += ...
RESOURCES += ...
CONFIG += static
Мои вопросы:
Декларативный Qt предоставляется для совместимости с Qt 4. Я предполагаю, что он не предназначен для связи с новыми проектами Qt 5. Похоже, что он был включен в Qt QML и Qt Quick.
Статические библиотеки не имеют возможности указать, какие из их символов экспортируются, а какие нет, поэтому идентичные частные символы, определенные в двух разных статических библиотеках, могут конфликтовать.