是否可以在 ECL 中加载共享库,导入一些接收和返回的 C 函数cl_object
(好像它们是用 定义的ecl_def_c_function()
)并在 REPL 中调用它们(不编译 *.lisp 文件)?
例如:
// 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"))
正如我发现没有办法告诉 ECL(通过 UFFI)C 函数处理cl_object
,而不是常规指针(void*)
。