QtCreator调试运行工程报错,无法找到相关库的的解决方案

最新在使用国产化平台做qt应用开发时,总是遇到qtcreator内调试运行

找不到动态库的问题,为什么会出现这种问题呢?明明编译的时候能够正常通过,运行或者调试的时候找不到相关的库呢?先说结论,排除库本身的问题,归根结底,可能是我们的pro文件中,关于库链接的方式,不能够被qmake正常解析,或者使我们链接方式不规范,导致我们的库依赖路径无法正常添加到运行环境中(qtcreator 相关配置,正常情况下会把解析的依赖环境自动加入运行环境中),进而导致在点击运行或者调试时无法找到相关库。

比如说,我们可能为了方便添加相同前缀的库文件,使用以下方式链接

bash 复制代码
LIBS += -lopencv_*.so

这种方式在某些情况下是能够正常编译的,但是如果该类型库文件具有前后依赖关系,系统可能就报找不到XXXX库。

其次,发现以下方式也肯能导致库依赖路径无法被加入运行环境

bash 复制代码
LIBS += /home/icpc/my/my.so

因此,自己总结了一下链接库的方式,以opencv为例子,其库包目录如下


include是包含目录,lib是库目录。

在该库包根目录下,新建一个xxxx.pri文件,内容如下

bash 复制代码
#opencv 4.5.3 install path
OPENCV_INSTALL_PATH =  $$PWD/../opencv4.5.3

#opencv 4.5.3 lib path
OPENCV_LIBS_PATH = $$OPENCV_INSTALL_PATH/lib

#opencv 4.5.3 include path
OPENCV_INCLUDE_PATH = $$OPENCV_INSTALL_PATH/include

LIBS += -L$$OPENCV_LIBS_PATH -lopencv_aruco \
                             -lopencv_barcode \
                            -lopencv_bgsegm \
                            -lopencv_bioinspired \
                            -lopencv_ccalib \
                            -lopencv_dnn_objdetect \
                            -lopencv_dnn_superres \
                            -lopencv_dpm \
                            -lopencv_face \
                            -lopencv_freetype \
                            -lopencv_fuzzy \
                            -lopencv_hfs \
                            -lopencv_img_hash \
                            -lopencv_intensity_transform \
                            -lopencv_line_descriptor \
                            -lopencv_mcc -lopencv_quality \
                            -lopencv_rapid \
                            -lopencv_reg \
                            -lopencv_rgbd \
                            -lopencv_saliency \
                            -lopencv_stereo \
                            -lopencv_stitching \
                            -lopencv_structured_light \
                            -lopencv_phase_unwrapping \
                            -lopencv_superres \
                            -lopencv_optflow \
                            -lopencv_surface_matching \
                            -lopencv_tracking \
                            -lopencv_highgui \
                            -lopencv_datasets \
                            -lopencv_text \
                            -lopencv_plot \
                            -lopencv_videostab \
                            -lopencv_videoio \
                            -lopencv_wechat_qrcode \
                            -lopencv_xfeatures2d \
                            -lopencv_shape \
                            -lopencv_ml \
                            -lopencv_ximgproc \
                            -lopencv_video \
                            -lopencv_dnn \
                            -lopencv_xobjdetect \
                            -lopencv_objdetect \
                            -lopencv_calib3d \
                            -lopencv_imgcodecs \
                            -lopencv_features2d \
                            -lopencv_flann \
                            -lopencv_xphoto \
                            -lopencv_photo \
                            -lopencv_imgproc \
                            -lopencv_core

INCLUDEPATH += $$OPENCV_INCLUDE_PATH/opencv4 \
               $$OPENCV_INCLUDE_PATH/opencv4/opencv2

在需要调用opencv库的库或则应用的pro文件中,通过以下片段链接库

bash 复制代码
include(/path/youpath/opencv/xxxx.pri)

如果多个库都需要用该库,在相关库pro中添加以上片段即可,这样保证了链接库的一致性,避免了同一工程中的同一种库链接的是不同路径下的库。

此时,完成编译后,opencv相关的库应该就正常添加到运行环境中了,在qtcreator中运行或调试程序时,就不会出现相关找不到库的情况。

ps:部分库之间是有前后依赖关系的,加载顺序错误也有可能导致程序运行出错,pkg_config链接方式较好,但也需要写一下依赖路径。

相关推荐
习惯就好zz1 个月前
qtcreator的vim模式下commit快捷键ctrl+g,ctrl+c没有反应的问题
vim·快捷键·commit·qtcreator·ctrl
Orientals4 个月前
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
opencv·qtcreator
爱搞事的程小猿6 个月前
1. qml的基础入门篇-及学习思路大纲
c++·qt·js·qml·qtcreator
Mr.codeee7 个月前
Qt Creator配置MSVC编译环境、调试环境
开发语言·c++·qt·msvc·qtcreator
凝望星辰9 个月前
Qt WebAssembly开发环境配置
开发语言·qt·wasm·qtcreator