2008-12-18 8 views
5

Lisp'den c veya C++ ile yazılmış bir kütüphaneden bir işlevi çağırabilir miyim? Lisp'i nasıl uzatabilirim? Bazı sistem çağrıları veya bunun gibi şeyler yapmak istediğinizde yararlıdır.lisp'yi C++ ile uzatabilir miyim?

+5

Porsche'imi go-kart motoruyla genişletebilir miyim? :-) –

cevap

8

Lisp olmayan lisp kodunu aramak nadirdir ve nadiren gereklidir. CLX (CL için X11 istemci uygulaması) Xlib uygulamasına bağlanmaz, ancak X11'i doğrudan "konuşur". Herhangi bir sistemde, CL uygulamanızın zaten gereksiz olan mükemmel işletim sistemi kancalarına sahip olması muhtemeldir. sözü

, cevap lisp uygulanmasına bağlıdır: aslında C altında bir CL ortamı barındırmak ve basitçe yürütmek için koduyla cl_eval() çağırabilir

ECL yılında. Bu, uygulamanızı (veya uygulama ana bilgisayarını) C (veya C++) ve "çağrı yap" lisp koduna yazmanıza izin verebilir. Diğer çoğu CL uygulamalarda

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

(ve evet bu yanı ECL ve CCL çalışır SBCL gibi): CCL yılında

, böyle bir şey yapalım bir C-uyumlu çağrı arayüzü var Diğer kişilerin ne hakkında konuştuğunu C işlevlerini çağırmanızı sağlayan UFFI (veya CFFI) kullanabilirsiniz. Tüm yapmanız gereken buysa, CFFI başlamak için iyi ve güvenli bir yerdir.

+0

uffi uzun süredir ... –

+0

Birçok program hala cffi yerine uffi hedefliyor; Uffi hala daha fazla kullanılabilirliğe sahiptir. – geocar

+1

Bugünlerde CFFI, ABCL ve CLISP gibi UFFI'dan daha fazla Lisps'i destekliyor. Ne demek istediğinden emin değilsin. –

İlgili konular