我们创建了一个插件;它是一个DLL(运行时动态链接),它使用第三方库(wxWidgets)并动态链接到它。主机软件似乎扫描我们的插件,但不调用导出的函数。我们使用DependencyWalker检查了所有依赖项。
我们在调试器中看到插件已加载,但未调用DllMain,并且已卸载插件。
我们尝试使用LoadLibrary和GetProcAddress从一个简单的测试应用程序加载我们的插件,该应用程序识别并调用导出的函数。
让wxWidgets静态链接工作正常。
有没有人知道为什么导出的函数,DllMain没有被调用,或者可以指出一个能够监控整个DLL加载过程的工具?
答案 0 :(得分:0)
如果在加载插件之前已将wxWidgets加载到进程地址空间(主机应用程序可以执行此操作,或者可能有另一个插件链接到在您之前加载的wxWidgets),则可能有可能是另一个版本,缺少插件所需的一些入口点。在DependencyWalker或WinDbg下运行主机应该会显示加载了哪些wxWidgets DLL,您可以尝试使用完全相同的wxWidgets DLL从测试应用程序加载插件。这应该揭示是否缺少依赖关系。
答案 1 :(得分:0)
在加载插件时,主机软件可能会做一些时髦的事情而不喜欢wxWindows。
无论如何,尝试使用SysInternals套件中的ProcessExplorer来检查进程正在做什么。