4
作爲問題聽起來很平凡,但經過一段時間翻閱ECL文件,CFFI文件和訴諸谷歌,我仍然無法得出明確的答案。 ECL文檔沒有提及回調語法,CFFI文檔沒有提及ECL回調方面的實現限制,我也不能將谷歌提示的頁面轉換爲邏輯。ECL是否支持回叫?
作爲問題聽起來很平凡,但經過一段時間翻閱ECL文件,CFFI文件和訴諸谷歌,我仍然無法得出明確的答案。 ECL文檔沒有提及回調語法,CFFI文檔沒有提及ECL回調方面的實現限制,我也不能將谷歌提示的頁面轉換爲邏輯。ECL是否支持回叫?
ECL在解釋和編譯模式下都支持回調。 CFFI爲您處理所有事情,這就是爲什麼沒有具體提及ECL(爲什麼應該有?)。如果你關心實際的實現請看ecl/src/lsp/ffi.lsp。 FFI:DEFCALLBACK的簽名是 (defmacro defcallback(name ret-type((arg-name arg-type)*)& body body) 換句話說,它需要或多或少與DEF-FUNCTION(type語法是相同的,UFFI),但它明確地命名每個參數(arg-name)並在lisp中提供代碼以執行。
從開發人員獲得響應令人鼓舞:)我沒有提及,但當評估CFFI時:DEFCALLBACK我得到一個錯誤「CDECL不表示有效的調用約定。」所以我開始檢查一般回調是否可能。然後,我的安裝或程序必須是一些本地問題,將嘗試弄清楚。謝謝。 – Andrei 2012-03-05 21:10:29
Ups,你可能是對的。問題是我們正在使用libffi庫,因此沒有CDECL約定(名稱從平臺變爲平臺)。如果您通過ECL錯誤跟蹤器報告它,它將幫助我解決此問題。將盡快解決。 – Juanjo 2012-03-27 17:27:51
我已經提交了一個錯誤報告:https://sourceforge.net/tracker/?func=detail&aid=3514934&group_id=30035&atid=398053 – Andrei 2012-04-04 17:33:15