我正在嘗試從C源代碼編譯成Python與ctypes加載共享庫。共享庫(以下名稱爲「libsub.so」)使用libusb庫。這就是 「製造」 所做的:Python的ctypes加載錯誤:未定義的符號
gcc -c -O2 -Wall -Werror -g -I../src -I../boot/vnd/fw -I. -fPIC -DLIBUSB_1_0 -I/usr/include/libusb-1.0 -o libsub.o libsub.c
gcc -shared -Wl,-soname,libsub.so -o libsub.so libsub.o
我之後嘗試的Python:
import ctypes
h = ctypes.cdll.LoadLibrary('./libsub.so')
不過,我喜歡這個
OSError: ./libsub.so: undefined symbol: libusb_open
我發現了一個錯誤「libusb_open 「實際上是libusb頭文件在」/usr/include/libusb-1.0/libusb.h「中的一個函數,它已經包含在這個庫」libsub.c「的源代碼中。
StackExchange中的一些帖子在使用ctypes加載C++共享庫時討論了這種「未定義的符號」錯誤,並且通過將編譯器從gcc更改爲g ++來解決問題。然而,我的源代碼是用C語言編寫的 - 所以它可能是一種不同的情況(實際上我嘗試過使用g ++來編譯這個源代碼,但遇到了一些錯誤)。任何人都可以指出我在這裏錯過了什麼?謝謝!
我有同樣的問題,我會_love_聽到如果答案幫助你或如果你找到了其他解決方案。 – Bex