Conflicting c-lambda definitions in Gambit generated C code
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 ~
Afficher les réponses par date
participants (1)
-
TJay