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

Dependency Walker parent import function list shows functions from a different lib

我正在尝试在我的项目中包含一个外部库(.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</pre>
Searching around it seems this type of error can come from .dll files being different in some way than you expect, which seems to be at least partially the problem here. When I open my program with dependency walker I can see that my .dll file found and the functions in it look to be correct as far as I can tell. However in the parent import function 窗格中的函数不一致或看起来不正确(我想为什么我会收到错误消息)。这些函数定义与我正在使用的另一个外部库中的函数完全匹配。

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

任何关于 dependency walker 试图告诉我什么或我现在应该尝试什么的想法都会很棒。

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

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