python使用ctypes調(diào)用第三方庫時(shí)出現(xiàn)undefined?symbol錯(cuò)誤詳解
今天在用python 調(diào)用c++庫文件時(shí)出現(xiàn)了一個(gè)錯(cuò)誤,這里主要記錄一下解決問題的思路。
1.出現(xiàn)錯(cuò)誤
在使用python 中使用中調(diào)用第三方so庫時(shí)
import ctypes cpp = ctypes.CDLL('./detector.so')
出現(xiàn)如下錯(cuò)誤:
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庫的架構(gòu),看是否平臺(tái)一致
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
發(fā)現(xiàn)平臺(tái)是沒有問題的。
(2)使用 ldd -r xxx.so 查看so庫鏈接狀態(tài)和錯(cuò)誤信息
ldd -r detector.so
輸出如下:
確實(shí)存在 undefined symbol: __powf_finite (./detector.so) 等問題,
(3)使用c++filt 定位錯(cuò)誤位置
使用以下命令來查找在c++代碼中的位置
c++filt __powf_finite
最后面發(fā)現(xiàn)是我c++代碼的問題,我在c++代碼中又引用了第三方庫.a文件,是.a文件的問題,這個(gè)文件是以前的老代碼生成的,自己重新編譯源碼生成新的 .a文件就可以解決了。
總結(jié)
到此這篇關(guān)于python使用ctypes調(diào)用第三方庫時(shí)出現(xiàn)undefined symbol錯(cuò)誤的文章就介紹到這了,更多相關(guān)python ctypes調(diào)用undefined symbol內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Scrapy-Redis之RedisSpider與RedisCrawlSpider詳解
這篇文章主要介紹了Scrapy-Redis之RedisSpider與RedisCrawlSpider詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python并發(fā)編程隊(duì)列與多線程最快發(fā)送http請(qǐng)求方式
假如有一個(gè)文件,里面有10萬個(gè)url,需要對(duì)每個(gè)url發(fā)送http請(qǐng)求,并打印請(qǐng)求結(jié)果的狀態(tài)碼,如何編寫代碼盡可能快的完成這些任務(wù)呢2021-09-09python3中_from...import...與import?...之間的區(qū)別詳解(包/模塊)
Python編碼第一步是導(dǎo)入模塊,有時(shí)候用import?***有時(shí)候用from...import,下面這篇文章主要給大家介紹了關(guān)于python3中_from...import...與import?...之間區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-08-08基于Python下載網(wǎng)絡(luò)圖片方法匯總代碼實(shí)例
這篇文章主要介紹了基于Python下載網(wǎng)絡(luò)圖片方法匯總代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06