我有插件,我希望将静态链接到我的应用程序。 在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文件。
我做错了什么?
答案 0 :(得分:2)
在你的插件.pro文件中使用以下代码:
CONFIG += plugin static
而不是
CONFIG += staticlib