我可以从用 c 或 c++ 编写的库中调用 lisp 函数吗?我怎样才能扩展 lisp?
当您想要执行一些系统调用或类似的操作时,这非常有用。
从 lisp 调用非 lisp 代码的情况很少见,而且很少有必要。 CLX(CL 的 X11 客户端实现)不链接到 Xlib 实现,而是直接“讲”X11。在任何系统上,您的 CL 实现可能已经具有出色的操作系统挂钩,因此无需这样做。
也就是说,答案取决于 Lisp 的实现:
In ECL实际上,您可以在 C 下托管一个 CL 环境,然后只需调用cl_eval()
以及要执行的代码。这可以让您用 C(或 C++)编写应用程序(或应用程序主机)并“调用”lisp 代码。
In CCL,有一个与 C 兼容的调用接口,可以让您执行如下操作:
(with-cstrs ((x "Hello World"))
(#_puts x))
在大多数其他 CL 实现中(例如 SBCL;是的,这也适用于 ECL 和 CCL),您可以使用 UFFI(或 CFFI),它只是让您调用 C 函数,这就是其他人正在谈论的。如果这就是您想做的全部事情,那么 CFFI 是一个良好、安全的起点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)