libffiのマンページには、本質的に関数へのポインタ(例の場合はputs
)が必要な例があります。関数のポインタではなく関数の呼び出し名
しかし、私は関数の名前しか知りませんが、実際にはポインタを持たない場合はどうすればいいですか?(通常、動的プログラミング言語でffiが使用されると起こります)
言ってやるが、私はこの(擬似コード)のような何かをしたい:
要するにcif = null
s = "Hello World"
args = []
values = []
args[0] = ffi.type_pointer
values[0] = address_of(s)
if(ffi.prepare(cif, ffi.DEFAULT_ABI, ffi.type_uint, args)):
ffi.call(cif, "puts", values)
が、私は(それが最初の場所でFFIでサポートされていた場合)を動的に同様の機能を調べるlibffiを持つようにしたいですdlfcn/LoadLibraryを使用して、指定されたFFI CIFタイプを使用して呼び出します。
libffiでこのようなことが可能ですか?単純な例はどのように見えますか?