提问人:a.wise 提问时间:8/11/2023 更新时间:8/16/2023 访问量:79
如何在Qt项目中链接库?
How to link libraries in Qt project?
问:
我正在尝试将 libirimager 库中的部分示例添加到我自己的 Qt 项目中。我无法链接类。它在目录中只有标头 IRImager.h。在我的中,我刚刚添加了类,就像示例中一样:directshow
IRImager
sdk
main.cpp
IRImager
directshow
#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项目中缺少一些东西。请帮助我了解问题所在。sdk
directshow
答:
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
评论
d
dumpbin.exe
dumpbin /symbols