Lisp で (Gdk) pixbuf に独自の put-pixel を書こうとしていました。CLでCポインターを操作する方法を最終的に認識したとき、新しい障害が発生しました- (gdk:pixbuf-get-pixels pb) は負の数を返します。私の質問は、どうにかして有効なポインターに変換できますか? cffi:convert-from-foreign と cffi:translate-from-foreign を使用しようとして失敗しました (これらの違いは何ですか?)。
以下は私の実際の(動作していない)コードです:
(defun put-pixel (pixbuf x y r g b)
(let ((p (+ (gdk:pixbuf-get-pixels pixbuf) (* x (gdk:pixbuf-get-n-channels pixbuf)) (* y (gdk:pixbuf-get-rowstride pixbuf)))))
(setf (cffi:mem-aref p :unsigned-char 0) r)
(setf (cffi:mem-aref p :unsigned-char 1) g)
(setf (cffi:mem-aref p :unsigned-char 2) b)))