Frage

Ich habe vor kurzem begonnen, Lisp lernen und wollte ein Programm schreiben, die GTK-Schnittstelle verwendet. Ich habe Lambda-gtk-Bindungen (auf CMUCL) installiert. Ich möchte putpixel / getpixel Fähigkeit, auf pixbuf haben. Aber ich fand, dass ich in den Speicher einen direkten Zugang nicht in der Lage bin. (Oder einfach nicht wissen, wie)

Funktion (GDK: pixbuf-get-Pixel pixbuf) gibt mir eine Zahl - Speicher-Adr, denke ich. In C ++ kann ich auf das Pixel I Notwendigkeit leicht zu bekommen. Gibt es eine Möglichkeit, meine eigenen putpixel in Lisp?

schreiben
War es hilfreich?

Lösung

In Lisp, moderne und tragbare Art und Weise den Zugriff auf C-Bibliotheken und den direkten Speicherzugriff zu tun ist, CFFI .

Sie können es wie folgt verwendet werden:

>(defparameter *p* (cffi:foreign-alloc :unsigned-char :count 10))
;; allocate 10 bytes
*P*
> (setf (cffi:mem-aref *p* :unsigned-char 0) 10)
;; access *p* as an array of bytes and set its 0th element to 10
10
> (cffi:mem-aref *p* :unsigned-char 0)
;; access *p* as an array of bytes and take its 0th element
10
> (cffi:make-pointer 123)
;; make a pointer that points to given address
#.(SB-SYS:INT-SAP #X0000007B)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top