FFI とは何か? ある言語から他の言語で作られたライブラリを呼び出すしくみの事。 ここでは Scheme から C の関数を呼び出す方法をとり上げる。例えば Scheme から libxml の関数を呼ぶなど。 しくみ 上から順に処理が流れる。 ライブラリのロード 呼び出そうとする C 関数を含む共有ライブラリをロードする。ロードに必要な情報は共有ライブラリの名前である。この名前はユーザーが指示する。 dlopen, LoadLibrary などでロードが行われる。この作業は初期化時に一回行うだけでよい。 型情報の提供 呼び出そうとしている関数の引数や戻り値の型を処理系(VM)に提供する。例えば引数は int, char* 、戻り値は void など。 これらの情報はユーザーが手入力したり、FFIの仕組みがヘッダをパースしたり(c-wrapper)することで提供される。 また引数の個数も
![FFI - Foreign Function Interface のしくみまとめ - higepon blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/8c15dd015b74800b7b11a3ba6a1290fa9b05280d/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fh%2Fhigepon%2F20080919%2F20080919094408.jpg)