tipos programa ejemplos definicion datos comandos caracteristicas c++ lisp extend

ejemplos - programa c++



¿Puedo extender lisp con c++? (3)

Ver UFFI y CFFI y el más liviano Clozure FFI

¿Puedo invocar una función desde lisp desde una biblioteca escrita en c o c ++? ¿Cómo puedo extender el ceceo? Esto es útil cuando quieres hacer algunas llamadas al sistema o cosas así.


Es inusual llamar al código no-lisp de lisp, y rara vez es necesario. CLX (la implementación del cliente X11 para CL) no se vincula con la implementación de Xlib, pero "habla" X11 directamente. En cualquier sistema, es probable que su implementación de CL ya tenga excelentes enlaces del sistema operativo, lo que hace que esto no sea necesario.

Dicho esto, la respuesta depende de la implementación de lisp:

En ECL puedes alojar un entorno CL en C y simplemente llamar a cl_eval() con el código para ejecutar. Esto puede permitirle escribir su aplicación (o servidor de aplicaciones) en C (o C ++) y "llamar a" el código de lisp.

En CCL , hay una interfaz de llamadas compatible con C que le permite hacer algo como esto:

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

En la mayoría de las otras implementaciones de CL (como SBCL, y sí esto también funciona en ECL y CCL) puede usar UFFI (o CFFI) que simplemente le permite llamar a funciones C, que es lo que otras personas están hablando. Si esto es todo lo que quiere hacer, entonces CFFI es un buen lugar seguro para comenzar.