背景
pythonのcyptesを試しているが、C側からPythonを呼び出せないのか
調べていたら、libcのqsortの例が
に出ていた。
そこで、OSXではlibcに該当するdylibはどれなんだろ?
Where is the standard C library on Mac OS X?
ありました。
libSystem.B.dylibが手元のYosemiteなMacには転がっていました。
やってみた
from ctypes import *
cdll.LoadLibrary("libSystem.B.dylib")
libc=CDLL("libSystem.B.dylib")
IntArray5=c_int * 5
ia = IntArray5(5,1,7,33,99)
qsort=libc.qsort
qsort.restype=None
CMPFUNC=CFUNCTYPE(c_int,POINTER(c_int),POINTER(c_int))
def py_cmp_func(a,b):
print("py_cmp_func",a[0],b[0])
return 0
cmp_func=CMPFUNC(py_cmp_func)
qsort(ia,len(ia),sizeof(c_int),cmp_func)
C言語側からpy_cmp_funcが呼ばれた。
まとめ
ということで、OSXはGHOSTとは無縁なことが分かった(違