У меня есть плагин Qt, статичный для сборки iOS, но динамический для других систем.Таким образом, IID
должен быть другим.
#include <QtQuick>
#include <QtGlobal>
class myPlugin : public QQmlExtensionPlugin
{
Q_OBJECT
#if defined(Q_OS_IOS)
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
#else
Q_PLUGIN_METADATA(IID "myPlugin")
#endif
Проблема в том, что на iOS он, похоже, не использует правильный IID
.Я получил бы ошибку во время выполнения, что myPlugin
не может быть найден.
- Я могу подтвердить, что
Q_OS_IOS
определено - когда я использую сообщение #pragma, чтобы увидеть, какая ветвь используется, я получаю правильную. - Когда я комментирую условия и оставляю только
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
, приложение работает нормально. - Когда я комментирую только
Q_PLUGIN_METADATA(IID "myPlugin")
код не будет компилироваться с
Undefined symbols for architecture arm64:
"qt_static_plugin_myPlugin()", referenced from:
...
Я сбит с толку - похоже, компилятор использует и не использует правильную условную ветвь одновременно:).