OpenCV:4.5.2 imread崩溃 libjpeg

海康GigE相机的SDK二次开发、公司的算法SDK识别图片,各自都做了单元测试。
导入算法SDK后,编译正常,但在运行时出现segment fault。

gdb定位到问题出现在libjpeg.so.8上,使用堆栈的内存地址查不到出错位置的符号。
借了一下算法SDK的源码,只有一句imread……

编译通过,应该在链接时可以找到符号,但是运行出错,可能链接的位置不对。
见这张图(出处不明,侵删):
OpenCV:4.5.2 imread崩溃 libjpeg

看到一篇文章,OpenCV发行版在调用这个jpeg时,与系统库的版本不太一样。
链接:https://www.cnblogs.com/cheungxiongwei/p/8383605.html
想了想,在编译OpenCV时,有选项BUILD_JPEG。找到源码目录(opencv-master/3rdparty/libjpeg),查看change.log,发现已经是9d版本(12-Jan-2020)。

于是试试看,在CMake里面加上了BUILD_JPEG,重新编译,居然可以正常运行了……
很奇怪的是此时用ldd看libopencv_highgui.so,指向的jpeg还是系统库里的libjpeg.so.8。

此处的未解之谜mark一下!如果有缘看到的小伙伴,请不吝赐教哈~

上一篇:AS自定义模板,效率提升的不是一星半点,flutter推送sdk


下一篇:Android studiod ADV 安装后无法启动