【问题标题】:Problems using dynamic linked libraries (wxWidgets) from a DLL使用 DLL 中的动态链接库 (wxWidgets) 的问题
【发布时间】:2009-04-24 15:09:39
【问题描述】:

我们创建了一个插件;它是一个 DLL(运行时动态链接),它使用第 3 方库(wxWidgets)并动态链接到该库。主机软件似乎扫描了我们的插件,但没有调用导出的函数。我们使用 DependencyWalker 检查了所有依赖项。

我们在调试器中看到插件被加载了,但是DllMain没有被调用,插件被卸载了。

我们尝试使用 LoadLibrary 和 GetProcAddress 从一个简单的测试应用程序中加载我们的插件,这些应用程序识别并调用了导出的函数。

不过,静态链接 wxWidgets 效果很好。

有没有人知道为什么不调用导出的函数,分别是 DllMain,或者可以指出一个能够监控整个 DLL 加载过程的工具?

【问题讨论】:

    标签: dll wxwidgets


    【解决方案1】:

    如果在你的插件加载之前 wxWidgets 已经加载到进程地址空间中(宿主应用程序可以这样做,或者可能有另一个插件链接到你之前加载的 wxWidgets),那么它可能有机会是另一个版本,缺少一些插件需要的入口点。在 DependencyWalker 或 WinDbg 下运行主机应用程序应该会显示加载了哪个 wxWidgets DLL,并且您可以尝试使用完全相同的 wxWidgets DLL 从测试应用程序加载插件。这应该可以显示是否缺少依赖项。

    【讨论】:

      【解决方案2】:

      也许主机软件在加载插件时做了一些时髦的事情,不喜欢 wxWindows。

      无论如何,请尝试使用 SysInternals 套件中的 ProcessExplorer 来检查进程在做什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-18
        • 1970-01-01
        • 1970-01-01
        • 2011-05-21
        相关资源
        最近更新 更多