3

我有插件,我想将它与我的应用程序静态链接。在 plugin.pro 文件中,我有:

TEMPLATE = lib
CONFIG += staticlib

在 plugin.cpp 中:

Q_EXPORT_PLUGIN2(plugin, pluginClass)

当然 .pro 文件中的 TARGET 与插件名称相同。

在 myapp.pro 文件中:

LIBS += libplugin.a

主.cpp:

#include <QtGui/QApplication>
#include <QtPlugin>

Q_IMPORT_PLUGIN(plugin)

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ...
    return a.exec();
}

插件编译没有错误,我得到 *.a 和 *.o 文件,所以我将 *.a 文件复制到 myapp 目录,当我尝试编译时出现如下错误:

cannot find -lmyplugin.a
collect2: ld returned 1 exit status

所以我在 myapp.pro 文件中给出了 libplugin.a 的完整路径,并且出现了 Q_IMPORT_PLUGIN 错误:

undefined reference to `qt_plugin_instance_plugin()'

还有很多这样的错误:

undefined reference to `pluginClass::function()'

我包含了我的插件的 *.h 文件。

我究竟做错了什么?

4

1 回答 1

2

在您的插件 .pro 文件中使用以下代码:

CONFIG += plugin static

代替

CONFIG += staticlib
于 2012-12-30T08:30:34.037 回答