Another problem I've found while porting OpenGL to Gambit-C 4 b15. I have 3 functions in C which take a function pointer, which has this prototype in C:
void (*fn)()
I defined the 3 functions in Gambit by using the followinf c-lambda special forms:
(define gluTessCallback (c-lambda (GLUtriangulatorObj* GLenum (function () void)) void "gluTessCallback"))
(define gluNurbsCallback (c-lambda (GLUnurbsObj* GLenum (function () void)) void "gluNurbsCallback"))
(define gluQuadricCallback (c-lambda (GLUquadricObj* GLenum (function () void)) void "gluQuadricCallback"))
When I compile, I get the following errors:
/tmp/cc4tArz0.o: In function `___converter0': gluQuadricCallback.c:(.text+0x0): multiple definition of `___converter0' /tmp/ccnNcStz.o:gluNurbsCallback.c:(.text+0x0): first defined here /tmp/ccicCqhJ.o: In function `___converter0': gluTessCallback.c:(.text+0x0): multiple definition of `___converter0' /tmp/ccnNcStz.o:gluNurbsCallback.c:(.text+0x0): first defined here collect2: ld returned 1 exit status
It seems there is a problem having multiple "(function () void)"s. Even if I create a (c-define-type voidFunc* (function () void)) in another file and include it in the three files containing tose 3 functions, it still gives me the same error.
If I move all 3 functions to the same file, however, the error disappears. (Because the ___converter0 function only appears in 1 C file.)
~ TJay ~