Hello, Thank you for your reply.
Now I am trying direct access wxWidgets GUI library with c-inline. If CFFI is possible to access C++ library, I will use CFFI. Best regards, hirohiro 2015-11-13 19:12 GMT+09:00 Daniel Kochmański <dan...@turtleware.eu>: > Hey, > > thanks for the report! > > Inlining is somewhat broken. Direct casting of a function into (void*) > is undefined behavior in C afaik but that's what we'll do. > > Please consult this issue: > https://gitlab.com/embeddable-common-lisp/ecl/issues/167 > > > hiro hiro writes: > > > Hello, > > > > I compiled ecl16.0.0 with option "--with-cxx". > > > > Then I use ffi:defcallback function like > > > > (ffi:defcallback yyyy :void () ..... ) > > > > then compile-file > > (compile-file "xxxxx.lisp" :c-file "xxxxx.cpp" :system-p t) > > > > I received error message as follows > > (freebsd10.1 clang++) > > xxxxx.cpp:162:8: error: no matching function for call to > > 'ecl_make_foreign_data' > > T0 = > > ecl_make_foreign_data(ECL_SYM("POINTER-VOID",1381),0,ecl_callback_0) > > > > I try as follows > > > > in src/cmp/cmpcbk.lsp & src/new-cmp/cmpc-cbk.lsp line 44 > > from: > > ,(format nil "ecl_make_foreign_data(@':pointer-void,0,~a)" c-name) > > to: > > ,(format nil "ecl_make_foreign_data(@':pointer-void,0,(void*)~a)" > > c-name) > > I've added main part of your mail to the abovementioned issue. I won't > incorporate this fix directly because I remember I did similar stuff > //casting to (void*)obj, or even casting to (void**)&obj// at my last > attempt when working on this issue but it was breaking arm builds. When > I'll confirm it doesn't break a builds I'll add it along with other > changes and the appropriate patch to CFFI. > > > > after that, I did not receive error message and ffi:callback work fine. > > > > Would you let me know what your thoughts are on this matter. > > Generally use CFFI's defcallback. It does just that but without inlining > (I've disabled inlining to make things working and left issue opened to > work on it when I'll find time/incentive to do it). > > > > hirohiro447 > > As a sidenote, according to Juan (I've asked him about the newcmp) > newcmp was a failed experiment and it doesn't build anyway. src/cmp/* > changes were enough. I'll remove the `new-cmp' directory before the next > release to avoid unnecessary confusing of people approaching the > codebase. > > Once again - thanks for the report :-) > > Best regards, > Daniel > > -- > Daniel Kochmański ;; aka jackdaniel | Poznań, Poland > TurtleWare - Daniel Kochmański | www.turtleware.eu > > "Be the change that you wish to see in the world." - Mahatma Gandhi >