我有一个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:
...
我很困惑-看起来编译器正在使用而不是同时使用正确的条件分支:)。