将 Qt 4.8 转换为 5 QPluginLoader->实例返回空



我用QT 4.8.2编写了一个应用程序。它可以动态加载不同的插件,为用户提供多种功能。现在Qt5发布了,我想把我的项目转换为最新版本。

我得到了一切工作,除了加载插件与QPluginLoader->instance()。当使用Qt 4.8.2时,它工作得很好。

-> errorString说:"文件'…/plugins/nlprod.dll '不是有效的Qt插件"

这是我的代码:

PluginLoader.cpp:

//"fileName" contains the name of the .dll
pluginLoader->setFileName(pluginsDir->absoluteFilePath(fileName));
//"a" contains the correct path + name of the .dll
QString a = pluginLoader->fileName();      
//"plugin" is null and success "false"
QObject *plugin = pluginLoader->instance();
bool success = pluginLoader->isLoaded();

MyPlugin.h:

class NLPro : public QObject, IConnection
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "NLPro" FILE "nlpro.json") // <- New since I've ported to Qt 5
    Q_INTERFACES(IConnection)
...
}

MyPlugin.cpp:我删除了以下内容:

Q_EXPORT_PLUGIN2(NLPro, NLPro);
我添加了一个.json文件,内容如下:
{ "Keys": [ "NLPro"] }

OP.

固定:

,

TARGET = $$qtLibraryTarget(nlpro)

在Qt 4.8中正常工作,我不得不将其更改为

TARGET = $$qtLibraryTarget(NLPro)

相关内容

  • 没有找到相关文章

最新更新