参考:http://kyamagu.github.io/mexopencv/#linux
在Linux下跑caffe的matlab接口时出现 libopencv_superres.so.2.4: undefined symbol: _ZTIN2cv16ParallelLoopBodyE 的错误。
开始以为是没编译好,于是重新编译了下 make mat,再次打开matlab 在 调用 caffe('is_initialized') 时还是出现同样错误,Google之,原来是因为库冲突了,在matlab中使用opencv时matlab会载入它自己的 opencv 版本的库。可以使用 LD_PRELOAD
强制定位到自己安装的opencv 。
首先可以查看是那些库冲突了:
1.在终端中 $ ldd /path/to/mexopencv/+cv/private/imread.mexa64
2.在matlab的命令窗口 >> !ldd /path/to/mexopencv/+cv/private/imread.mexa64
3.可以从两者输出的结果中看到其定位的不同。
然后, 在打开matlab之前使用 LD_PRELOAD 就可以了,如
LD_PRELOAD=/home/zhmxu/software/opencv-2.4.8/build/lib/libopencv_superres.so.2.4:/home/zhmxu/software/opencv-2.4.8/build/lib/libopencv_video.so.