2

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

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

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

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

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

4

1 回答 1

2

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

于 2016-04-04T15:58:50.313 回答