2011-06-03 77 views
2

我试图用QOCI插件QtSql,直到我遇到了一些问题: Why QOCI plugin isn't working调用LoadLibrary失败和依赖学步车没有帮助

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

我有一个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(其由依赖步行者位于)为:

  • OCI.DLL:是在同一文件夹中QtCore4.dll和QtSql4.dll,意味着我的应用程序可以访问它
  • KERNEL32。 DLL:我相信最简单的DLL找到我的应用程序
  • msvscr80.dll:使用它的其他DLL文件可以成功加载。

这里是我的问题:给定的Dependency Walker说:“你除了那些QT的所有DLL”,我相信,我有qt的dll文件,可以是其他什么原因LoadLibrary来失败,ERROR_MOD_NOT_FOUND?

回答

5

您需要在动态模式下运行Dependency Walker,因为这些依赖项是通过显式链接解决的。我相信你从配置文件菜单执行此操作。

+0

真的解决了这个问题:)非常感谢你 – 2011-06-06 09:38:07