chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] continuing callback confusion


From: Elliot Cuzzillo
Subject: Re: [Chicken-users] continuing callback confusion
Date: Thu, 18 Jan 2007 12:55:07 -0500

Is the C interface supposed to work with C++?
When I try to compile the same example (which john provided) with the
-c++ option, the compiler borks on the line

C_word k = CHICKEN_run(C_toplevel);

with the error

address@hidden scheme]$ csc x2.scm y2.c -embedded -c++
y2.c: In function `int main()':
y2.c:5: error: invalid conversion from `void (*)(int, int, int)' to `void*'
y2.c:5: error:   initializing argument 1 of `int CHICKEN_run(void*)'
*** Shell command terminated with exit status 1: g++ y2.c -o y2.o -c
-DHAVE_CHICKEN_CONFIG_H -Os -fomit-frame-pointer -fno-strict-aliasing
-Wall -Wno-unused -Wno-uninitialized -DC_ENABLE_PTABLES
-DC_NO_PIC_NO_DLL -DC_EMBEDDED  -I /home/elliot/usr/include


When I cast C_toplevel to a (void *), the error is
------------------------------------------------
address@hidden scheme]$ csc x2.scm y2.c -embedded -c++
y2.o(.text+0x30): In function `main':
: undefined reference to `foo(char*)'
collect2: ld returned 1 exit status
*** Shell command terminated with exit status 1: g++ y2.o x2.o
-lchicken -o x2  -L/home/elliot/usr/lib -Wl,-R/home/elliot/usr/lib
-ldl -lm  -ldl  -lchicken
------------------------------------------------
This leads me to think that some kind of name mangling in C++ prevents
callbacks from having the correct name, or something. Is calling
Scheme from C++ (as opposed to C) feasible, or should I have some sort
of C glue layer?

Thanks,
Elliot




reply via email to

[Prev in Thread] Current Thread [Next in Thread]