我正在尝试实现一个插件系统,但我遇到了一些问题。在插件DLL中,我有类似这样的代码:
extern "C" __declspec(dllexport) void InitPlugin(PluginManager* pMgr)
{
pMgr->RegisterPlugin(new MyPluginObject);
}
MyPluginObject
派生自纯虚拟PluginObject类。在PluginManager::RegisterPlugin()
中,存储指向插件对象的指针供以后使用。我可以从MyPluginObject
内成功调用RegisterPlugin()
中的函数,但是一旦InitPlugin
返回,每当我尝试使用{{1}中存储的插件对象时,我都会遇到访问冲突}。我该如何解决这个问题?
答案 0 :(得分:1)
当然,我在这里问一个问题,并在10分钟后自己弄清楚。问题实际上与此无关,而是我使用自己的类来处理DLL文件的加载。事实证明,类被意外删除的时间早于预期,并且它使用它卸载了DLL,这使DLL中的所有内容无效。