<div dir="ltr"><p>Hi. I want to use the following C function: <br>
</p>
<p><code>;; void ClearBackground(Color color);</code></p>
<p>Color is C Struct: <code><br>
  </code></p>
<p><code>;; typedef struct Color {<br>
;;     unsigned char r;        // Color red value<br>
;;     unsigned char g;        // Color green value<br>
;;     unsigned char b;        // Color blue value<br>
;;     unsigned char a;        // Color alpha value<br>
;; } Color;</code></p>
<p>So I wrote:</p>
<p><code>(cffi:defcstruct %color<br>
  (r :uint8)<br>
  (g :uint8)<br>
  (b :uint8)<br>
  (a :uint8))<br>
    <br>
(defvar *%lightgray* (cffi:foreign-alloc '(:struct %color)))<br>
    <br>
(cffi:with-foreign-slots ((r g b a) *%lightgray* (:struct %color))<br>
  (setf (cffi:foreign-slot-value *%lightgray* '(:struct %color) 'r) 200) <br>
  (setf (cffi:foreign-slot-value *%lightgray* '(:struct %color) 'g) 200)<br>
  (setf (cffi:foreign-slot-value *%lightgray* '(:struct %color) 'b) 200)<br>
  (setf (cffi:foreign-slot-value *%lightgray* '(:struct %color) 'a) 255)<br>
  (format t "~s ~s ~s ~s" r g b a))<br>
 <br>
;; void ClearBackground(Color color);<br>
(cffi:defcfun ("ClearBackground" %clear-background) :void<br>
  (color (:struct %color)))<br>
    <br>
(defun clear-background (color)<br>
  (%clear-background color))<br>
  </code></p>
<p>But when i run</p>
<p><code>(clear-background *%lightgray*)</code></p>
<p>That does not work, I have already added my .asd file ":cffi-libffi" as dependency.</p>
<p>What is the problem? If this issue has no solution, is there an alternate way?<br></p>
</div>