Hello, cffi-grovel is failing to compile a file. I am not certain whether the problem is the way I am using cffi-grovel (most likely), my utter lack of knowledge of C, or something else. Also I noticed recent activity by Liam Healy on linking to structures (which I did not closely follow), and I wonder if it has any bearing on this. I want to link CL to "triangle", a library for two dimensional triangulation and meshing (http://www.cs.cmu.edu/~quake/triangle.html). The interface to the main subroutine is defined in "triangle.h" which defines a structure "triangulateio": struct triangulateio { REAL *pointlist; /* In / out */ REAL *pointattributelist; /* In / out */ int *pointmarkerlist; /* In / out */ int numberofpoints; /* In / out */ int numberofpointattributes; .... } I defined a groveller lisp file libtriangle-unix.lisp with the following contents: (define REAL "double") (include "/home/mv/external-libraries/c-code/triangle/triangle.h") (cstruct triangulateio "triangulateio") (Note that I did not specify any fields. I saw a post on the web suggesting that cffi would fill it in. Is that correct?) In the asd file, I have :components ((:file "cl-triangle-package-def") (cffi-grovel:grovel-file "libtriangle-unix"))) When I load the system, a C file is generated in ~/.cache/..., and this file fails to compile, on the statement containing "sizeof(triangulateio)" Here are the C file contents: #define REAL double #include "/home/mv/external-libraries/c-code/triangle/triangle.h" #include <grovel/common.h> int main(int argc, char**argv) { FILE *output = argc > 1 ? fopen(argv[1], "w") : stdout; fprintf(output, ";;;; This file has been automatically generated by " "cffi-grovel.\n;;;; Do not edit it by hand.\n\n"); fprintf(output, "(cl:in-package #:CL-TRIANGLE)\n\n"); /* cstruct section for TRIANGULATEIO */ fprintf(output, "(cffi:defcstruct ("); fprintf(output, "triangulateio"); fprintf(output, " :size %i)", sizeof(triangulateio)); /* Line 20 */ fprintf(output, ")\n"); ... The error message is libtriangle-unix.c: In function ‘main’: libtriangle-unix.c:20: error: ‘triangulateio’ undeclared (first use in this function) The same error happens if I modify the C file to explicitly declare the structure there. Two questions: - Is my procedure incorrect (the grove lisp file, asdf specification) - I don't see why triangulateio is undefined on line 20. But that may be my lack of C knowledge. Thanks, Mirko