Domanda

Posso chiamare una funzione da Lisp da una libreria scritta in C o C ++? Come posso prolungare lisp? Questo è utile quando si desidera fare alcune chiamate di sistema o cose del genere.

È stato utile?

Soluzione

E 'insolito per chiamare codice non lisp da Lisp, e raramente necessarie. CLX (l'implementazione client X11 per CL) non si collega alla realizzazione Xlib ma "parla" X11 direttamente. Su qualsiasi sistema, l'implementazione CL è probabile che abbia già ottimi ganci del sistema operativo di rendering superfluo.

Detto questo, la risposta dipende l'attuazione Lisp:

ECL si può effettivamente ospitare un ambiente di CL in C e semplicemente chiamare cl_eval() con il codice da eseguire. Questo può consentire di scrivere la vostra applicazione (o host dell'applicazione) in C (o C ++) e "chiamata a" codice Lisp.

CCL , v'è un'interfaccia di chiamata C-compatibile, che ti permette di fare qualcosa di simile :

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

Nella maggior parte delle altre implementazioni CL (come SBCL; e sì questo funziona in ECL e CCL pure) è possibile utilizzare UFFI (o CFFI), che permette semplicemente di chiamare funzioni C, che è quello che gli altri stanno parlando. Se questo è tutto ciò che si vuole fare, allora CFFI è un buon, luogo sicuro per iniziare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top