3

QT 4.8.2 を使用してアプリケーションを作成しました。ユーザーに複数の機能を提供するために、さまざまなプラグインを動的にロードします。Qt5 がリリースされ、プロジェクトを最新バージョンに変換したいと考えました。

QPluginLoader->instance() でプラグインをロードする以外は、すべて動作するようになりました。Qt 4.8.2 を使用している間は問題なく動作しました。

->errorString : 「ファイル '…/plugins/nlprod.dll' は有効な Qt プラグインではありません。」</p>

それが私のコードです:

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"] }
4

1 に答える 1