python使用ctypes調(diào)用第三方庫時出現(xiàn)undefined?symbol錯誤詳解
今天在用python 調(diào)用c++庫文件時出現(xiàn)了一個錯誤,這里主要記錄一下解決問題的思路。
1.出現(xiàn)錯誤
在使用python 中使用中調(diào)用第三方so庫時
import ctypes
cpp = ctypes.CDLL('./detector.so')
出現(xiàn)如下錯誤:
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),看是否平臺一致
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)平臺是沒有問題的。
(2)使用 ldd -r xxx.so 查看so庫鏈接狀態(tài)和錯誤信息
ldd -r detector.so
輸出如下:

確實存在 undefined symbol: __powf_finite (./detector.so) 等問題,
(3)使用c++filt 定位錯誤位置
使用以下命令來查找在c++代碼中的位置
c++filt __powf_finite
最后面發(fā)現(xiàn)是我c++代碼的問題,我在c++代碼中又引用了第三方庫.a文件,是.a文件的問題,這個文件是以前的老代碼生成的,自己重新編譯源碼生成新的 .a文件就可以解決了。
總結(jié)
到此這篇關(guān)于python使用ctypes調(diào)用第三方庫時出現(xiàn)undefined symbol錯誤的文章就介紹到這了,更多相關(guān)python ctypes調(diào)用undefined symbol內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python結(jié)合多線程爬取英雄聯(lián)盟皮膚(原理分析)
多線程是為了同步完成多項任務(wù),不是為了提高運行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。這篇文章主要介紹了python爬取英雄聯(lián)盟皮膚結(jié)合多線程的方法,需要的朋友可以參考下2021-05-05
利用python在excel里面直接使用sql函數(shù)的方法
今天小編就為大家分享一篇利用python在excel里面直接使用sql函數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
Python基于sklearn庫的分類算法簡單應(yīng)用示例
這篇文章主要介紹了Python基于sklearn庫的分類算法,結(jié)合簡單實例形式分析了Python使用sklearn庫封裝樸素貝葉斯、K近鄰、邏輯回歸、SVM向量機(jī)等常見機(jī)器學(xué)習(xí)算法的分類調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
python中enumerate函數(shù)遍歷元素用法分析
這篇文章主要介紹了python中enumerate函數(shù)遍歷元素用法,結(jié)合實例形式分析了enumerate函數(shù)遍歷元素的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2016-03-03
Django生成PDF文檔顯示網(wǎng)頁上以及PDF中文顯示亂碼的解決方法
今天小編就為大家分享一篇Django生成PDF文檔顯示網(wǎng)頁上以及PDF中文顯示亂碼的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12

