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

问题描述:

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

+5

我可以用卡丁车发动机来延长我的保时捷吗? :-) – 2008-12-18 20:33:36

从lisp中调用非lisp代码是很少见的,而且很少有必要。 CLX(CL的X11客户端实现)不链接到Xlib实现,而是直接“说出”X11。在任何系统上,你的CL实现可能已经具有优秀的操作系统钩子,这使得不必要的。

这就是说,答案取决于Lisp实现:

ECL你其实可以℃在举办CL环境,只需调用cl_eval()用代码来执行。这可以让你用C(或C++)编写应用程序(或应用程序主机)并“调用”lisp代码。

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

(with-cstrs ((x "Hello World")) 
    (#_puts x)) 

在其他多数CL实现(像SBCL;是的这部作品在ECL和CCL,以及)你可以使用UFFI(或CFFI),它只是让你调用C函数,这是其他人正在讨论的。如果这就是你想要做的,那么CFFI是一个很好,安全的开始。

+0

uffi早已过时... – 2008-12-20 01:05:17

+0

uffi早已过时... – 2008-12-20 01:05:00

CFFI