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

news/2025/2/9 6:33:40

我在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的问题?


http://www.niftyadmin.cn/n/712298.html

相关文章

QT多线程之---moveToThread用法

在gui编程里,一个子函数的运行时间可能过长,界面就处于假死状态,原因是窗口是一个线程,子函数也在这个线程里,一些事件也要在这个线程里处理。 如果子函数运行时间过长,系统没有办法调用事件监听循环&#…

【翻译】在Ext JS 5种使用ViewControllers

原文:Using ViewControllers in Ext JS 5简介在Ext JS 5中,在应用程序架构方面提供了一些令人兴奋的改进,如添加了ViewModels、MVVM以及viewControllers来加强MVC应用程序。最重要的是,这些选择并不互斥,因此&#xff…

10.StringBuffer常用方法

2019独角兽企业重金招聘Python工程师标准>>> 1. 照片 1 stringBuffer /** * stringBuffer: * 1. 构造方法 * 无参构造 StringBuffer sb new StringBuffer(); * 2. 添加功能 publ…

一步一步学习Redis——使用config命令查看或设置配置项

1.Redis配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf(Windows 名为 redis.windows.conf)。 你可以通过 CONFIG 命令查看或设置配置项。 2.Redis config命令格式 2.1 查看配置项 redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME 使…

mysql_cluster集群_Mysql-cluster集群

Mysql-cluster集群Master:192.168.1.210Data1:192.168.1.209Data2:192.168.1.208Node1:192.168.1.207Node2:192.168.1.206conf文件参考:vim /var/lib/mysql-cluster/config.ini ---------------------管理节点配置文件cat >/var/lib/mysql-cluster/co…

git提交代码到码云

git是代码管理工具,配合工具可以提交本地代码到GitHub,如果是国内用户可以提交代码到码云。具体工具的安装和码云的注册省略,下面简单的记录下如何提交一个代码到码云。 码云中新建仓库 (1)点击""图标新建仓…

Android中canvas rotate中心点问题图解

为什么80%的码农都做不了架构师?>>> 第一步平移: canvas.translate(200, 100); 第二步旋转90度 (注意:x 和 y 坐标会一同旋转) canvas.rotate(90); 第三步向x轴移动-100 canvas.translate(-100, 0); 第四步向x轴移动-100&#xf…

替代left join方法_义县游学电子教您一招:改变系统的快捷键映射为一个按键的方法...

01文章主题大家好,我是您的朋友义县游学电子科技.今天跟您介绍的文章主题是:改变系统的快捷键映射为一个按键的方法,原本需要按下ctrlA才能完成的全选功能,现在你只需要按下A键就能搞定了.是不是非常的省力而不麻烦.有了这个功能您…