首页 > 解决方案 > LNK 2019 错误:Qt 项目在 MINGW 中工作,而不是在 MSVC 中

问题描述

我有一个包含多个链接库的项目。一个特定的库链接到另一个库并调用一个符号,链接器声称该符号是未定义的。

我已经链接到在 .pro 文件中应该有这个符号的库,如下所示:

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../SourceLibrary/release/ -lSourceLibrary
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../SourceLibrary/debug/ -lSourceLibrary
else:unix: LIBS += -L$$OUT_PWD/../SourceLibrary/ -lSourceLibrary

INCLUDEPATH += $$PWD/../SourceLibrary
DEPENDPATH += $$PWD/../SourceLibrary

这使用 MINGW 正确链接,所以我不关心库名称或函数定义/声明中的拼写错误。

检查 Dependencies 中的 SourceLibrary 后,我注意到所需的符号确实存在。

这使我检查了 SourceLibrary 的 Makefile,但是具有所需符号的文件似乎以与具有符号的其他文件相同的方式引用。

我还检查了应该包含带有 dumpbin 符号的中间 .obj 文件,该文件确实有这些符号,并且与链接器错误报告具有相同的修饰。

使用 dumpbin /ALL 的进一步调查显示,这些符号位于 SourceLibrary.dll 文件中,与依赖关系以及链接器错误相矛盾。

总之,我不明白为什么链接器和依赖项都看不到应该在库中的符号。我怀疑 MSVC/MINGW 编译器的差异,但显然此时只有怀疑。

标签: qtvisual-c++mingwlinker-errors

解决方案


推荐阅读