1
ECLで共有ライブラリを読み込み、受け取ったC関数をインポートしてcl_object
(ecl_def_c_function()
で定義されているかのように)を呼び出してREPL (* .lispファイルをコンパイルせずに)?例えば埋め込み可能なCommon Lisp(ECL):拡張関数を使用して共有ライブラリをロードする
は:
// file 'extensions.c' compiled to 'extensions.so'
cl_object
do_something
(cl_object arg)
{
cl_object
result = ...;
return result;
}
; in ECL REPL
(uffi:load-foreign-library #p".../extensions.so")
... ; importing stuff
(format t "got: ~a~%" (do-something "text"))
私は(UFFI経由)ECL cl_object
でそのC関数の契約ではなく、通常のポインタ(void*)
を伝える方法はありませんいたよう。