CentoOS。Pythonから***.soみたいな共有ライブラリを呼ぶ必要があったのでちょっと調べた。Python3.6。
呼び方は↓。
import ctypes LIB_PATH = '/hoge/fuga/libmodule.so' lib = ctypes.cdll.LoadLibrary(LIB_PATH ) res = lib.hogefunc() #intの引数とるやつ arg_int= ctypes.c_int(10) res = lib.fugefunc(arg_int)
関数呼ぶのは上で行けるんだけど、引数が結構ややこしい。基本的には公式のctype見ればいいんだけども。やっかいなのが「char *」。ポインタの場合は↓の感じ。
str="some args str" strb=bytes(str , encoding='utf-8', errors='replace') strp=ctypes.c_char_p(strb ) res = lib.mogefunc(strp)
一回バイト配列に変換してからポインタに変換しないとダメみたいですよ。