CからPythonを呼ぶこともできるが、今回はいらない。
---------------------
import ctypes
共有ライブラリをロードしておく。今回初めて共有ライブラリを作ってみた。それまでは.aしか知らなかった。時代は変わる、ボブディラン。
libmain=ctypes.CDLL("./test.so")
共有ライブラリの中にある、関数をPythonにあてる。
ptest1=libmain.test1
ptest2=libmain.test2
引数と戻り値のタイプを指定する。
ptest1.argtypes = []
ptest1.restype = ctypes.c_double
ptest2.argtypes = []
ptest2.restype = ctypes.c_double
これはウェブから
def test_test(lst):
cintarray=ctypes.c_double*len(lst)
clist=cintarray(*lst)
ptest1(clist,len(lst))
return [x for x in clist]
どちらでも動く。
print libmain.ptest2(None)
print ptest2(None)
print test_test([0.0,0.0])