最初に ctypes を使用する必要があります。まず、構造体を構築します。
import ctypes
class BlurRect(ctypes.Structure):
"""
rectangular area to blur
"""
_fields_ = [("bottom", ctypes.c_int),
("top", ctypes.c_int),
("left", ctypes.c_int),
("right", ctypes.c_int),
]
関数をロードします。共有ライブラリに最適な名前を見つけて、それをロードする必要があります。このコードは、dll または .so として既に実装されており、ld パスで使用できる必要があります。
他のトリッキーなビットは、関数に「出力」パラメーターがあり、関数がその結果をそこに書き込むことが期待されていることです。そのためのバッファを作成する必要があります。
ctypes コードは次のようになります。
blurlib = ctypes.cdll.LoadLibrary("libblur.so")
outbuf = ctypes.create_string_buffer(1024) # not sure how big you need this
inputStructs = [BlurRect(*x) for x in application_defined_data]
successFlag = blurlib.bitmapblur("input",
outbuf,
inputStructs,
count,
reps)