【问题标题】:Dependency Walker parent import function list shows functions from a different libDependency Walker 父导入函数列表显示来自不同库的函数
【发布时间】:2016-05-15 22:35:54
【问题描述】:

我正在尝试在我的项目中包含一个外部库(.lib 指向一个 .dll)。我正在使用 QT 在 Windows 上构建(它似乎使用 msvc2010 作为编译器)并且在我的 .pro 文件中有:LIBS += <path>/<libraryName>.lib。我在输出可执行文件的目录中有相应的 .dll 文件,因此可以找到它。当程序运行时,我从 QT 得到以下信息:

Starting (program name)...
The program has unexpectedly finished.
(program name) exited with code -1073741515
Searching around 似乎这种类型的错误可能来自 .dll 文件在某些​​方面与您预期的不同,这似乎至少部分是这里的问题。当我使用dependency walker 打开我的程序时,我可以看到找到了我的 .dll 文件,并且据我所知,其中的函数看起来是正确的。然而,在parent import function 窗格中,功能不同意或看起来不正确(我想为什么我会收到错误)。这些函数定义与我正在使用的另一个外部库中的函数完全匹配。

对我来说,这表明 .lib 文件不正确,但是我之前在不同的程序中使用过这对 .lib/.dll 文件(不是内置在 QT 中)并且它们运行良好。此外,我尝试从我的 .pro 文件中删除对 .lib 文件的引用,并且正确的函数调用抱怨(在找到的 .dll 文件中定义的该库中的函数)。 .lib 文件看起来完全符合我的预期,使用 Dumpbin.exe /EXPORTS 查看其内容。

任何关于依赖步行者试图告诉我什么或我现在应该尝试什么的想法都会很棒。

编辑 2/8:我构建了一个 minimal example。它以同样的错误停止,但是在依赖遍历器中而不是显示来自另一个库的函数,它没有显示预期的函数。

【问题讨论】:

    标签: windows qt visual-studio-2010 dll dependency-walker


    【解决方案1】:

    查看为您的最小示例给出的解释,似乎这里发生的是库没有 MinGW 函数调用(它们都是 MSVC 调用)。在库中找到的函数被正确列出,因为它们只是没有从其他编译器链接。至于为什么会出现不同的库函数,我猜是dependency walker中的一个bug。

    【讨论】:

      猜你喜欢
      • 2013-10-05
      • 2011-02-03
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      相关资源
      最近更新 更多