Ich habe einige Spielzeug C++ Bibliothek gebaut, um schnell ein Qt-Fenster von Lisp zu erstellen. Ich weiß, dass common-qt existiert, ich versuche nur zu lernen, wie man cffi benutzt.Lisp, cffi, let and memory
Gerade jetzt, ich habe 4 binded Funktionen:
- create-Anwendung: eine QApplication erstellen und liefern einen Zeiger
- erstellen Fenster: eine QMainWindow erstellen und geben einen poiner
- zeigen: anzeigen das Fenster als Argument angegeben
- exec: Qt exec Funktion
Hier ist ein Lisp-Code, die Arbeit perfec tly:
Aber wenn ich LET oder LET * verwende ... habe ich einen Speicherfehler!
(let* ((a (create-application)) (w (create-window-aalt)))
(show w)
(exec a))
CORRUPTION WARNING in SBCL pid 1312(tid 140737353860992):
Memory fault at a556508 (pc=0x7ffff659b7f1, sp=0x7ffff2bbe688)
The integrity of this image is possibly compromised.
Exiting.
Weiß jemand warum?
I SBCL bin mit:
env LD_LIBRARY_PATH=`pwd` \
env LD_PRELOAD=/usr/lib/libQtGui.so.4 \
sbcl --script aalt.lisp
Dank.
Danke für Ihre Antwort! Ich benutze bereits extern "C", Sie können meinen Code hier sehen: http://pastebin.archlinux.fr/464826 Nun, es funktioniert in Lisp, wenn ich defparameter benutze und nicht lassen, also denke ich, es ist keine C++ Ausnahme ... aber ich werde es trotzdem versuchen und ich werde es euch wissen lassen. – Filippo
danke, es funktioniert! Aber nur mit Clisp, habe ich immer noch den gleichen Fehler mit SBCL. Irgendeine Ahnung ? – Filippo