我可以從c或C++編寫的庫中調用lisp函數嗎?我該如何擴展lisp? 當你想要做一些系統調用或類似的東西時,這很有用。我可以用C++擴展lisp嗎?
5
A
回答
8
從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
5
4
CFFI!
相關問題
- 1. C#我可以從EntityFramework擴展IdentityMessage嗎?
- 2. 我們可以使用Objective-C類來擴展C++類嗎?
- 3. 我可以切換擴展器的可擴展性嗎?
- 4. 我可以在擴展Python的同時使用C++特性嗎?
- 5. 我可以擴展php類型嗎?
- 6. 我可以修改或擴展ChartJS嗎?
- 7. 我可以在UIViewController中擴展viewWillAppear嗎?
- 8. 我可以防止擴展HorizontalScrollView嗎?
- 9. 我可以擴展Enum a la Enum.GetValues()嗎?
- 10. 我可以擴展docker-compose文件嗎?
- 11. 我可以擴展Overlay類嗎?
- 12. 我可以在SMLNJ中擴展typedef嗎?
- 13. Servlets可以擴展嗎?
- 14. RestEasy可以擴展@Path嗎?
- 15. firefox擴展可以啓用/禁用其他擴展工作嗎?
- 16. 我可以在C中擴展一個結構嗎?
- 17. 我可以在C#中擴展請求方法嗎?
- 18. CUDA可以使用SIMD擴展嗎?
- 19. AIR本機擴展:我可以從C/Objective-C調用ActionScript 3方法嗎?
- 20. 我可以用擴展程序啓動Chrome應用嗎?
- 21. 我可以使用UIDocumentationInteractionController顯示應用程序擴展嗎?
- 22. 我們可以使用javascript調用iOS8擴展嗎?
- 23. 我可以使用擴展應用程序的兩個類嗎?
- 24. 用java/C++擴展php嗎?
- 25. Objective-C代碼可以在Class上調用Swift擴展嗎?
- 26. 我可以使用MinGW編譯的Python擴展與Visual C++編譯的擴展一起使用嗎?
- 27. 我可以在sqlalchemy中使用MYSQL空間擴展嗎?
- 28. 我可以使用+/-等擴展對象嗎?
- 29. 我可以用python創建一個擴展名嗎?
- 30. 我可以使用Java擴展Kotlin授權類嗎?
我可以用卡丁車發動機來延長我的保時捷嗎? :-) – 2008-12-18 20:33:36