Qt 使用 OpenCV 时如何解决头文件找不到的问题?-灵析社区

PX_13

qt 使用opencv,添加外部库,一直找不到头文件,应该如何解决 下面是.pro 文件以及.pri 文件 QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++17 # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target include (D:/data/opencv-4.10.0/opencv-4.10.0/_build/opencv.pri) INCLUDEPATH += D:/data/opencv-4.10.0/opencv-4.10.0/_build/install/include Debug:{ LIBS += -lD:/data/opencv-4.10.0/opencv-4.10.0/_build/install/x64/vc17/lib/opencv_world4100d } Release:{ LIBS += -lD:/data/opencv-4.10.0/opencv-4.10.0/_build/install/x64/vc17/lib/opencv_world4100 } 下面是报错信息 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240922/10d345f90b232c402253fc1ddaf08f1c.png) 尝试过更改INCLUDPATH 改为 -I………………

阅读量:151

点赞量:0

问AI
这个问题我已经解决了,主要问题原因不是很清楚,总体来说就是,qt在编辑时和编译时,依赖的路径并不一致,一般情况下, 设置了includepath目录之后,在进行编译时会自动寻找到includepath指定的目录,这是一个自动的过程,然而,在windows环境下,或者说在我的环境下出现了异常,导致在寻找依赖目录时,出现了问题,导致一致报错, 增加一个dependpath就行了,指定的目录跟includepath一致。 下面是AI对这个问题的答复 在 Qt 项目配置中,INCLUDEPATH 和 DEPENDPATH 是两个不同的变量,它们的作用和使用场景有所不同。 INCLUDEPATH INCLUDEPATH 用于指定编译器在编译过程中查找头文件的路径。当你在代码中使用 #include 指令包含头文件时,编译器会根据 INCLUDEPATH 中指定的路径来查找这些头文件。 例如: INCLUDEPATH += D:/lib/include 这告诉编译器在 D:/lib/include 目录下查找头文件。 DEPENDPATH DEPENDPATH 用于指定 qmake 在生成 Makefile 时查找依赖文件的路径。虽然 DEPENDPATH 和 INCLUDEPATH 在某些情况下可以设置为相同的路径,但它们的主要用途不同。DEPENDPATH 主要用于 qmake 在处理依赖关系时查找相关文件。 通常情况下,DEPENDPATH 可以省略,因为 qmake 会自动根据 INCLUDEPATH 来处理依赖关系。然而,在某些复杂的项目中,可能需要显式地设置 DEPENDPATH 来确保 qmake 能够正确处理依赖关系。 配置示例 根据你提供的信息,你的 .pri 文件配置如下: INCLUDEPATH += D:/lib/include Debug { LIBS += -lD:/lib/x64/vc17/lib/opencv_world4100d } Release { LIBS += -lD:/lib/x64/vc17/lib/opencv_world4100 } 注意事项 路径分隔符:在 .pro 和 .pri 文件中,路径分隔符通常使用正斜杠(/)而不是反斜杠(\)。 库文件路径:在 LIBS 中指定库文件路径时,不需要使用 -l 前缀。-l 前缀用于指定库文件名,而不是完整路径。 修改后的配置如下: INCLUDEPATH += D:/lib/include Debug { LIBS += -LD:/lib/x64/vc17/lib -lopencv_world4100d } Release { LIBS += -LD:/lib/x64/vc17/lib -lopencv_world4100 } 结论 通常情况下,INCLUDEPATH 是必需的,而 DEPENDPATH 可以省略。在大多数情况下,INCLUDEPATH 足以确保编译器和 qmake 正确处理头文件和依赖关系。如果你的项目没有特殊需求,可以只设置 INCLUDEPATH。 «ai回答的不是很准确,实际上更改后的文件是在includepath下增加了一行 "DEPENDPATH += D:/lib/include"»