【问题标题】:LoadLibrary fails and dependency walker does not helpLoadLibrary 失败并且依赖walker 没有帮助
【发布时间】:2011-09-07 21:04:58
【问题描述】:

我试图为 QtSql 使用 QOCI 插件,直到遇到一些问题: Why QOCI plugin isn't working

然而事实证明这是一个库加载问题(至少我是这么认为的),所以我决定改变问题的主题,因为这是一个新问题。

我有一个 dll 文件(称为 qsqloci4.dll)当我尝试使用 LoadLibrary 加载它时,它失败并且 GetLastError 返回 ERROR_MOD_NOT_FOUND。当我尝试使用 LoadLibraryEx 加载它并且第三个参数是 DONT_RESOLVE_DLL_REFERENCES 时,加载成功(不返回 NULL)。

所以,我认为这是一个依赖问题。我用依赖walker打开了dll文件,有2个文件找不到:QtCore4.dll和QtSql4.dll。 但是这些文件在应用的工作目录下,其他依赖这些dll的dll文件(如qsqlpsql4.dll)都加载成功了。

其他dll(由依赖walker定位)是:

  • oci.dll : 与 QtCore4.dll 和 QtSql4.dll 位于同一文件夹中,意味着我的应用可以访问它
  • kernel32.dll : 我相信我的应用最容易找到的 dll
  • msvscr80.dll : 其他使用这个的dll文件可以加载成功。

这是我的问题:给定依赖 walker 说:“除了 qt 之外,你有所有的 dll”并且我确信我有 qt dll,LoadLibrary 因 ERROR_MOD_NOT_FOUND 而失败的其他原因是什么?

【问题讨论】:

    标签: winapi qt dll loadlibrary dependency-walker


    【解决方案1】:

    您需要在动态模式下运行 Dependency Walker,因为这些依赖项将通过显式链接解决。我相信您是通过“个人资料”菜单执行此操作的。

    【讨论】:

      猜你喜欢
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 2011-09-03
      • 2011-10-06
      • 2014-09-06
      • 2022-11-11
      • 1970-01-01
      相关资源
      最近更新 更多