如何在Qt项目中链接库?

How to link libraries in Qt project?

提问人:a.wise 提问时间:8/11/2023 更新时间:8/16/2023 访问量:79

问:

我正在尝试将 libirimager 库中的部分示例添加到我自己的 Qt 项目中。我无法链接类。它在目录中只有标头 IRImager.h。在我的中,我刚刚添加了类,就像示例中一样:directshowIRImagersdkmain.cppIRImagerdirectshow

#include <cstdio>
#include <iostream>

#include "thermovision_control_suite.h"
#include <QApplication>

// IR Imager imager interfaces
#include "IRImager.h"

evo::IRImager _imager;

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    ThermovisionControlSuite w;
    w.show();
    return a.exec();
}

输出如下:

error: undefined reference to `__imp__ZN3evo8IRImagerD1Ev'
error: undefined reference to `__imp__ZN3evo8IRImagerC1Ev'

在我的文件中,我添加了以下几行:thermovision_control_suite.pro

INCLUDEPATH += $$PWD/sdk
DEPENDPATH += $$PWD/sdk

LIBS += $$PWD/sdk/x64/libirextras.dll \
        $$PWD/sdk/x64/libirextrasd.dll \
        $$PWD/sdk/x64/libirimager.dll \
        $$PWD/sdk/x64/libirimagerd.dll

例如,它似乎包含所有需要的东西,并且它从Visual Studio项目中的源代码构建,没有任何问题。我的Qt项目中缺少一些东西。请帮助我了解问题所在。sdkdirectshow

C++ Qt DLL 链接器 undefined-reference

评论

0赞 Botje 8/11/2023
链接 DLL 的纯版本和 -suzended 版本几乎可以肯定是错误的。此外,应使用用于生成这些 DLL 的相同编译器(系列)。关于其中一个 DLL,有什么要说的?ddumpbin.exe
0赞 a.wise 8/11/2023
libirimager.dll 的依赖
0赞 Botje 8/11/2023
我的意思是.dumpbin /symbols
0赞 a.wise 8/11/2023
它只显示文件类型:dll,libirextras.dll的符号

答:

0赞 Botje 8/11/2023 #1

您链接的文档包含以下行:

此外,还需要安装适用于 Visual Studio 2013 的 Visual C++ 可再发行组件包

结合DirectShow示例,这使我得出结论,您需要使用Visual Studio编译应用程序,而不是使用MinGW等GCC派生。

评论

0赞 a.wise 8/11/2023
DirectShow项目在Visual Studio 2022中成功编译,是的,在那里使用了MSVC编译器。我正在尝试将该程序的部分移植到我自己的Qt项目中。也许在Qt本身中更改编译器是值得的,尽管我不认为这是链接问题的确切原因
0赞 a.wise 8/12/2023
我无法将编译器MinGW从Qt中的Kits更改为MSVC。 i.imgur.com/rP3Y9LA.png 是的,我使用旧版本的Qt
0赞 Botje 8/12/2023
这在很大程度上是原因。所有内容都必须由同一编译器编译
0赞 a.wise 8/14/2023
我需要帮助来确定要为此Qt版本安装的适当编译器集,并找到调试器。您帮助解决此问题将不胜感激
0赞 Botje 8/14/2023
依赖项资源管理器应告知您提供的任何 dllw 是否依赖于 VS 运行时 dll(msvrtXXX.dll 或 ucrtbaseXXX.dll),如果是,则是什么版本。然后,您应该使用该编译器下载或编译所需的Qt版本。
0赞 a.wise 8/16/2023 #2

找到了替代解决方案。可以使用 Visual Studio 中的扩展来配置使用 Qt: https://musescore.org/en/handbook/developers-handbook/compilation/compile-instructions-windows-visual-studio