LoadLibrary失败,依赖walker没有帮助

Hay*_*tuk 2 dll winapi qt loadlibrary dependency-walker

我试图为QtSql使用QOCI插件,直到我遇到一些问题: 为什么QOCI插件无法正常工作

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

我有一个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?

Dav*_*nan 5

您需要在动态模式下运行Dependency Walker,因为它是一些将通过显式链接解析的依赖项.我相信您可以从"配置文件"菜单执行此操作.