Q_IMPORT_PLUGIN,我可以使用多少次



我正在尝试构建一个插件应用程序,一个加载一些插件的应用程序。。。我玩了一些动态加载,一切都很好。现在我在玩静态加载。。。我陷入了以下情况:

我有两个插件,应用程序可以同时使用,但不能同时使用。在main.cpp中,我有:

Q_IMPORT_PLUGIN(RawPlugin)
Q_IMPORT_PLUGIN(BPlugin)

和在.pro:中

LIBS           = -L../../plugins-static -lraw
LIBS           = -L../../plugins-static -lb

通过以上配置,我得到:

In function `ZN29StaticRawPluginPluginInstanceC1Ev':
C:UsersUserDownloadsthethingsourceappbuild-static/../main.cpp:7: undefined reference to `qt_static_plugin_RawPlugin()'
collect2.exe: error: ld returned 1 exit status
Makefile.Debug:78: recipe for target 'debugapp.exe' failed
mingw32-make[1]: *** [debugapp.exe] Error 1

注释任何一个Q_IMPORT_PLUGIN和相应的LIBS行使其工作。

我做错了什么?

两个插件实现相同的接口,有关系吗?

class RawPlugin : public QObject,
                  public PluginInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.Examples.PluginInterface")
    Q_INTERFACES(PluginInterface)

class BPlugin : public QObject,
                public PluginInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.Examples.PluginInterface")
    Q_INTERFACES(PluginInterface)

您的问题确实与.pro文件有关。你已经写了

LIBS           = -L../../plugins-static -lraw
LIBS           = -L../../plugins-static -lb

它的作用是第一行将LIBS设置为-L../../plugins-static -lraw。第二行只是将其更改为-L../../plugins-static -lb。所以你最终只得到了两个libs中的一个。您应该在=:前面添加一个+

LIBS           += -L../../plugins-static -lraw
LIBS           += -L../../plugins-static -lb

相关内容

  • 没有找到相关文章

最新更新