0

プラグイン システムを実装しようとしていますが、いくつか問題があります。プラグイン DLL には、次のようなコードがあります。

extern "C" __declspec(dllexport) void InitPlugin(PluginManager* pMgr)
{
    pMgr->RegisterPlugin(new MyPluginObject);
}

MyPluginObject純粋な仮想 PluginObject クラスから派生します。ではPluginManager::RegisterPlugin()、プラグイン オブジェクトへのポインタは、後で使用するために保存されます。MyPluginObject内からの関数を正常に呼び出すことができますRegisterPlugin()が、一度InitPlugin戻ると、 に格納されたプラグイン オブジェクトを使用しようとすると、アクセス違反が発生しRegisterPlugin()ます。これを修正するにはどうすればよいですか?

4

1 に答える 1

1

もちろん、ここで質問をして、10 分後に自分で解決します。この問題は実際にはこれとは何の関係もありませんでした。代わりに、独自のクラスを使用して DLL ファイルの読み込みを処理していました。クラスが誤って予想よりも早く削除され、DLL がアンロードされ、DLL のすべてが無効になったことが判明しました。

于 2011-12-30T06:23:16.697 に答える