C kaynağından derlenen paylaşılan bir kitaplığı, Citi'ler ile Python'a yüklemeye çalışıyordum. Kullanılan kitaplık ("libsub.so" aşağıda), libusb kitaplıklarını kullanmıştır. Bu "make" nedir yaptı:Python ctypes yükleme hatası: undefined symbol
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
Ve ben bundan sonra Python çalıştı: Ancak
import ctypes
h = ctypes.cdll.LoadLibrary('./libsub.so')
, ben "libusb_open buldum bu
OSError: ./libsub.so: undefined symbol: libusb_open
gibi bir hata var "aslında" libsub.c "kütüphanesinin kaynağına dahil olan" /usr/include/libusb-1.0/libusb.h "dosyasındaki libusb başlığının bir işleviydi.
StackExchange'deki bazı iletiler, C++ paylaşılan kütüphaneleri klişelerle yüklerken "tanımsız sembol" hataları hakkında konuştu ve derleyiciyi gcc'den g ++ 'ye değiştirerek sorunlar çözüldü. Ancak, sahip olduğum kaynak C --- ile yazılmıştır, bu yüzden farklı bir durum olabilir (aslında bu kaynağı derlemek için g ++ 'yı denedim ama bir sürü hata yaptım). Burada neyi özlediğimi bilen var mı? Teşekkürler!
gcc -shared -Wl,-soname,libsub.so -lusb -o libsub.so libsub.o
^^^^^
Belki de LibUSB yolunu belirtmeniz gerekir:
Aynı sorunu yaşıyorum ve cevabın size yardımcı olup olmadığını veya başka bir çözüm bulup duymadığını öğrenmek için _love_. – Bex