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

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

LIBS += -lopencv_*.so

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

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

LIBS += /home/icpc/my/my.so

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

在这里插入图片描述
include是包含目录,lib是库目录。
在该库包根目录下,新建一个xxxx.pri文件,内容如下

#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文件中,通过以下片段链接库

include(/path/youpath/opencv/xxxx.pri)

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值