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