我在 linux (ubuntu) 系统上有自己的带有插件(动态共享库)的程序。我的库(插件)使用 OpenCV(可能不那么重要)。
我的插件位于 /usr/local/lib/mysoft/。
即使使用库,我也成功编译了我的程序,成功安装,所以到目前为止一切似乎都很好。
当我运行我的程序时,它会根据一些配置文件加载一堆这些库。我有几个已成功加载的库,但我无法加载一个库。加载时出现错误(使用 dlopen() 打开库):
/usr/local/lib/mysoft/libMyPlugin2.so: undefined symbol: _ZN2cv6resizeERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi
Segmentation fault (core dumped)
Tue Nov 20 19:11:29 CET 2012
显然,要找到作为 OpenCV 一部分的 cv::resize 存在一些问题,但我不明白为什么。
我检查了以下内容:
- OpenCV 可能已正确安装,因为其他库也使用它并且加载时没有问题
- 我的程序没有依赖项,libMyPlugin2.so 或 OpenCV 丢失(用 ldd 检查)
- 所有库和二进制文件的架构似乎都是相同的(我用 objdump -f 检查了它)
有人知道我在做什么错吗?
这篇文章似乎很相关,但仍然没有帮助: Linux shared library that uses a shared library undefined symbol