Dependency Walker父导入函数列表显示来自不同库

时间:2016-02-05 20:20:36

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

我正在尝试在项目中包含一个外部库(.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文件不知何故是不正确的,但我之前在另一个程序(不是QT内置)中使用过这对.lib / .dll文件,并且它们工作正常。此外,我尝试从.pro文件中删除对.lib文件的引用,并且正确的函数调用抱怨(在找到的.dll文件中定义的库中的那些)。 .lib文件看起来也是我期望它使用Dumpbin.exe /EXPORTS查看其内容的方式。

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

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

1 个答案:

答案 0 :(得分:2)

看看给出的最小例子的解释,看来这里发生的是没有MinGW函数调用库(它们都是MSVC调用)。库中找到的函数是正确列出的,因为它们不是从其他编译器链接的。至于为什么会出现不同的库函数,我猜它是依赖walker中的一个错误。