2012-10-13 49 views
3

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

TEMPLATE = lib 
CONFIG += staticlib 

在plugin.cpp:

当然
Q_EXPORT_PLUGIN2(plugin, pluginClass) 

在.pro文件目标是一样的插件名称。

在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(); 
} 

插件编译没有错误,我得到* u和* .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

IIRC在.pro文件应该读'LIBS + = plugin',我也不行当然,如果这能解决你所有的错误,但我敢打赌它会解决第一个链接错误。 – Chris

+0

@Chris只能用Qt插件来思考这个帮助。我有我自己的插件,LIBS + =插件导致:“插件:没有这样的文件或目录” –

回答

2

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

CONFIG += plugin static 

,而不是

CONFIG += staticlib