Kütüphaneler libtorque.so
ktypes kullanarak global olarak bildirilen bir int değeri pbs_errno
eşlemek istiyorum.Ortak bir kitaplıktan genel bir değişkenin harita kümeleriyle eşleştirilmesi
from ctypes import *
libtorque = CDLL("libtorque.so")
başarıyla fonksiyonları bir demet haritalandırdık:
Şu anda şöyle kitaplığı yükleyebilirsiniz. Ancak, hata denetimi için, bunların çoğu pbs_errno
değişkenini ayarladı, böylece buna da ihtiyacım var. Bunu erişmeye çalışırsanız, ancak ben alıyorum:
>>> pytorque.libtorque.pbs_errno
<_FuncPtr object at 0x9fc690>
, bir işlev işaretçisi değil ve bir seg arıza sonuçlanır arama girişiminde.
Bu API başlık dosyaları ana başlıkta int pbs_errno;
ve extern int pbs_errno;
olarak ilan ediyor.
objdump olarak sembolünü gösterir:
http://docs.python.org/library/ctypes.html#accessing-values-exported-from-dlls
ör: DLL dışa değerlerini artırmak konusunda ctypes dokümanlar bir kısmı vardır
00000000001294f8 g DO .bss 0000000000000004 Base pbs_errno
John'un cevabı doğrudur. Restype'ın ayarlanması sadece fonksiyonun dönüş tipini değiştirir, AFAICT. Aslında pbs_errno işlevini bir işlev olarak denediysem, bir segfault ile sonuçlandı. –