我能否从C或C++编写的库中调用Lisp函数?如何扩展Lisp? 当您想要进行一些系统调用或类似操作时,这非常有用。
很少需要从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))