当前位置:主页 > python教程 > python ctypes调用undefined symbol

python使用ctypes调用第三方库时出现undefined symbol错误详解

发布:2023-04-03 10:20:01 59


给大家整理一篇相关的编程文章,网友何宇文根据主题投稿了本篇教程内容,涉及到python、ctypes调用、python、undefined、symbol、python调用第三方库、python ctypes调用undefined symbol相关内容,已被354网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

python ctypes调用undefined symbol

今天在用python 调用c++库文件时出现了一个错误,这里主要记录一下解决问题的思路。

1.出现错误

在使用python 中使用中调用第三方so库时

import ctypes
cpp = ctypes.CDLL('./detector.so')

出现如下错误:

Traceback (most recent call last):
File “detection.py”, line 143, in
face_detection(image_path)
File “detection.py”, line 52, in face_detection
cpp = ctypes.CDLL(’./detector.so’)
File “/usr/lib/python3.8/ctypes/init.py”, line 373, in init
self._handle = _dlopen(self._name, mode)
OSError: ./detector.so: undefined symbol: __powf_finite

这是由于未定义__powf_finite引起的。

2.分析步骤

(1)使用file命令检查so库的架构,看是否平台一致

file detector.so

输出:

detector.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=8ac2d2c5490394447e21cf383f1428d8ad70be7a, with debug_info, not stripped

发现平台是没有问题的。

(2)使用 ldd -r xxx.so 查看so库链接状态和错误信息

ldd -r detector.so

输出如下:

确实存在 undefined symbol: __powf_finite (./detector.so) 等问题,

(3)使用c++filt 定位错误位置

使用以下命令来查找在c++代码中的位置

c++filt __powf_finite

最后面发现是我c++代码的问题,我在c++代码中又引用了第三方库.a文件,是.a文件的问题,这个文件是以前的老代码生成的,自己重新编译源码生成新的 .a文件就可以解决了。

总结

到此这篇关于python使用ctypes调用第三方库时出现undefined symbol错误的文章就介绍到这了,更多相关python ctypes调用undefined symbol内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

  • Python代码库之Tuple如何append添加元素问题

    发布:2023-04-24

    这篇文章主要介绍了Python代码库之Tuple如何append添加元素问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • python不以科学计数法输出的实例方法总结

    发布:2019-10-29

    今天小编就为大家分享一篇python 不以科学计数法输出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • python3读取Excel表格数据的代码分享

    发布:2020-01-18

    这篇文章主要介绍了python3 读取Excel表格中的数据的相关资料,需要的朋友可以参考下


  • python snap7读写PLC的操作方法

    发布:2023-03-30

    这篇文章主要介绍了python snap7读写PLC的操作方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


  • python-tkinter之按钮的使用,开关方法

    python-tkinter之按钮的使用,开关方法

    发布:2022-06-23

    给网友们整理关于python的教程,今天小编就为大家分享一篇python-tkinter之按钮的使用,开关方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • Python运算符优先级详细整理

    发布:2023-03-02

    在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象,由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,下面这篇文章主要给大家介绍了关于Python运算符优先级的相关资料,需要的朋友可以参考下


  • 深入理解 Python 中的多线程 新手必看

    发布:2022-04-05

    你应当将下边的例子运行多次,以便可以注意到线程是不可预测的和线程每次运行出的不同结果。声明:从这里开始忘掉你听到过的关于GIL的东西,因为GIL不会影响到我想要展示的东西


  • python利用Future对象回调别的函数知识点总结

    发布:2019-11-06

    最近在学习python,所以这篇文章主要给大家介绍了关于在python中利用Future对象回调别的函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需


网友讨论