python自定义结束符号_Python输入恐怖-未定义的符号-用于自定义C++ MODU

我在Ubuntu 11.04上使用OpenCV 2.3到2.4.2开发了一个C++的Python模块。OpenCV是从源代码构建的。我没有使用Ubuntu存储库中的OpenCV版本。

我的Python模块编译没有问题,并且在Python中正确加载。然而,当我在Ubuntu11.10或12.04上编译这个模块时,当我试图在Python中加载它时,我得到一个带有消息“undefined symbol”的重要错误。

我就是这样编译这个模块的:g++ -fPIC -shared `pkg-config --cflags --libs python` `pkg-config --cflags --libs opencv` -I/usr/local/include/opencv2/legacy -o mymodule.so mymodule.cpp

这是“pkg config--cflags--libs opencv”的输出-I/usr/local/include/opencv -I/usr/local/include /usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_contrib.so /usr/local/lib/libopencv_core.so /usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_gpu.so /usr/local/lib/libopencv_highgui.so /usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_legacy.so /usr/local/lib/libopencv_ml.so /usr/local/lib/libopencv_nonfree.so /usr/local/lib/libopencv_objdetect.so /usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_stitching.so /usr/local/lib/libopencv_ts.so /usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videostab.so

我得到的错误是:ImportError: /path/to/service/mymodule.so: undefined symbol: _ZN5CvSVMD1Ev

我的理解是,“未定义的符号”通常意味着在任何链接库中都找不到给定的符号。但是我知道这个符号在libopencv_ml.so因为当我运行这个时:$ nm -g /usr/local/lib/libopencv_ml.so | grep _ZN5CvSVMD1Ev

我得到:000000000002fd40 T _ZN5CvSVMD1Ev

/usr/local/lib似乎位于动态链接器缓存中。$ cat /etc/ld.so.conf.d/libc.conf

# libc default configuration

/usr/local/lib

so文件也在缓存中。$ ldconfig -p | grep opencv | grep ml

libopencv_ml.so.2.4 (libc6,x86-64) => /usr/local/lib/libopencv_ml.so.2.4

libopencv_ml.so (libc6,x86-64) => /usr/local/lib/libopencv_ml.so

你能告诉我我做错了什么吗?Ubuntu 11.04和11.10之间在运行Python时加载共享库的方式有什么变化吗?或者这是OpenCV的问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值