自己的静态链接插件

时间:2012-10-13 11:19:03

标签: qt plugins static linker

我有插件,我希望将静态链接到我的应用程序。 在plugin.pro文件中我有:

TEMPLATE = lib
CONFIG += staticlib

在plugin.cpp中:

Q_EXPORT_PLUGIN2(plugin, pluginClass)

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

在myapp.pro文件中:

LIBS += libplugin.a

main.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文件。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

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

CONFIG += plugin static

而不是

CONFIG += staticlib