¿Puedo invocar una función de 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í.¿Puedo extender lisp con C++?
Respuesta
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 del entorno Lisp:
En ECL en realidad se puede alojar un entorno CL en C y simplemente llamar cl_eval()
con el código a 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 llamada compatibles C-que le permiten hacer algo como esto:
(with-cstrs ((x "Hello World"))
(#_puts x))
En la mayoría de otras implementaciones CL (como SBCL; y sí funciona esto en ECL y CCL también) puede usar UFFI (o CFFI) que simplemente le permite llamar a las 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.
uffi es obsoleto por mucho tiempo ... –
Muchos programas aún se enfocan en uffi en lugar de cffi; uffi todavía tiene una mayor disponibilidad. – geocar
En estos días, CFFI admite más Lisps que UFFI, a saber, ABCL y CLISP. No estoy seguro si eso es lo que quieres decir. –
CFFI!
- 1. ¿Puedo 'extender' una estructura en C?
- 2. ¿Puedo extender Jenkins con Jython/Python
- 3. Usando Lisp en C#
- 4. ¿Extender el lenguaje C#?
- 5. ¿Dónde puedo encontrar un lector de Lisp en C?
- 6. Transformación Lisp a C++
- 7. LISP Parser C++
- 8. ¿Puedo hacer esto en Lisp?
- 9. ¿Cómo puedo extender datetime.datetime de Python con mis propios métodos?
- 10. Problema simple con subseq (LISP)
- 11. ¿Podría extender Corona con código nativo?
- 12. Servicio web con Lisp
- 13. Primer Lisp con macros?
- 14. ¿Cómo puedo extender la clase de imagen?
- 15. ¿Cómo puedo extender ApplicationController en una joya?
- 16. ¿Extender la clase Enumerable en C#?
- 17. ¿Es posible extender matrices en C#?
- 18. Extender el lenguaje C#, ¿cuánto esfuerzo/ganancia?
- 19. ¿Cómo puedo simplemente "correr" archivos Lisp
- 20. Extender Microsoft.VisualStudio.TestTools.DataSource.XML
- 21. Cómo extender protocolos/delegados en Objective-C
- 22. ImageMagick extender lienzo con fondo transparente
- 23. Cómo extender espacios de nombres con EmberJS
- 24. Extender entidades hibernadas con la anotación
- 25. ¿Puedo usar fácilmente Lisp sin Emacs?
- 26. Lisp Intérprete en un programa en C++
- 27. Common Lisp equivalente a C enums
- 28. programación de robots con lisp?
- 29. extender una CFC con una ruta relativa
- 30. Common Lisp a Lisp-n?
¿Puedo ampliar mi Porsche con un motor de karts? :-) –