我有插件,我想将它与我的应用程序静态链接。 在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 文件。
我做错了什么?
最佳答案
在您的插件 .pro 文件中使用以下代码:
CONFIG += plugin static
而不是
CONFIG += staticlib
关于qt - 自己的静态链接插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12872598/