我可以用c ++扩展lisp吗?

cod*_*bly 5 c++ lisp extend

我可以从用c或c ++编写的库中调用lisp函数吗?我该如何扩展lisp?当你想做一些系统调用或类似的事情时,这很有用.

geo*_*car 8

从lisp调用非lisp代码是很少见的,而且很少需要.CLX(CL的X11客户端实现)不链接到Xlib实现,而是直接"说出"X11.在任何系统上,您的CL实现可能已经具有出色的操作系统挂钩,这使得不必要.

也就是说,答案取决于lisp的实现:

ECL中,您实际上可以在C下托管CL环境,只需调用cl_eval()代码即可执行.这可以让您用C(或C++)编写应用程序(或应用程序主机)并"调用"lisp代码.

CCL中,有一个C兼容的调用接口,可以让你做这样的事情:

(with-cstrs ((x "Hello World"))
  (#_puts x))
Run Code Online (Sandbox Code Playgroud)

在大多数其他CL实现中(如SBCL;以及是的,这也适用于ECL和CCL),您可以使用UFFI(或CFFI),它只是让您调用C函数,这是其他人正在谈论的.如果这就是你想要的,那么CFFI是一个好的,安全的起点.

  • *这些*天是现在2012年,而不是2008年我写的那篇:P (2认同)