我可以用C++扩展lisp吗?
答
从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
我可以用卡丁车发动机来延长我的保时捷吗? :-) – 2008-12-18 20:33:36