From: "Matthew Studley" <matthew.studley@uwe.ac.uk>
To: Elias Athanasopoulos <elathan@phys.uoa.gr>,
linux-c-programming@vger.kernel.org
Subject: Re: mixing C/C++
Date: Mon, 10 Nov 2003 15:00:31 -0000 [thread overview]
Message-ID: <003301c3a79b$643573e0$caba0ba4@uwe.ac.uk> (raw)
In-Reply-To: 20031108093029.GB802@velka.phys.uoa.gr
Have you considered using SWIG to automatically generate your wrappers?
... SWIG is a software development tool that connects programs written in C
and C++ with a variety of high-level programming languages. SWIG is
primarily used with common scripting languages such as Perl, Python, Tcl/Tk,
and Ruby...
http://www.swig.org/
May be a useful resource. I've used it with C and Python.
regards
Matt
----- Original Message -----
From: Elias Athanasopoulos <elathan@phys.uoa.gr>
To: <linux-c-programming@vger.kernel.org>
Sent: Saturday, November 08, 2003 9:30 AM
Subject: mixing C/C++
> Hello!
>
> I want to create Ruby bindings for a C++ project, so my first
> step is to call C++ code from C, since Ruby has a plain C API.
>
> Consider I have a Foo class which its implementation is compiled
> in a shared lib (libtest.so). I have a second wrapper lib:
>
> #include "libtest.h"
>
> extern "C" class Foo * wrap_foo_ctor() { return new Foo(); }
> extern "C" void wrap_foo_set_food(Foo *f, int i) { f->set_food(i); }
> extern "C" int wrap_foo_hello(Foo *f) { return f->hello(); }
>
> Using the above my C program is:
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main(void)
> {
> struct Foo *m = (struct Foo*) wrap_foo_ctor();
>
> wrap_foo_set_food(m, 10);
> wrap_foo_hello(m);
>
> free(m);
>
> return 1;
> }
>
> And:
>
> elathan@velka:~/src/bindings> gcc foo.c -Wall -ltest -lwrap -o
foo -L/home/elathan/src/bindings
> foo.c: In function `main':
> foo.c:6: warning: implicit declaration of function `wrap_foo_ctor'
> foo.c:8: warning: implicit declaration of function `wrap_foo_set_food'
> foo.c:9: warning: implicit declaration of function `wrap_foo_hello'
> elathan@velka:~/src/bindings> ./foo
> 10
>
>
> My main question is how to silent the implicit declaration warning in
> gcc, which is, of course, correct. I want everything to compile
with -Wall.
> Is there a warkaround?
>
> I tried to create a C header file, but I don't know how to make a C
prototype
> of:
>
> class Foo * wrap_foo_ctor() { return new Foo(); }
>
> Or silent the 'icompatible pointer type' warning in declarations, such as:
>
> int wrap_foo_hello(Foo *f) { return f->hello(); }
>
> TIA,
> --
> University of Athens I bet the human brain
> Physics Department is a kludge --Marvin Minsky
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe
linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
> This incoming email to UWE has been independently scanned for viruses and
any virus detected has been removed using McAfee anti-virus software
>
>
>
next prev parent reply other threads:[~2003-11-10 15:00 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-11-08 9:30 mixing C/C++ Elias Athanasopoulos
2003-11-08 13:36 ` James Stevenson
2003-11-10 15:00 ` Matthew Studley [this message]
2003-11-10 17:37 ` Elias Athanasopoulos
2003-11-12 4:35 ` convert INT to CHAR but print's BEEP J.
2003-11-12 7:11 ` Mikael Aronsson
2003-11-13 1:26 ` convert INT to CHAR - SOLVED J.
2003-11-13 6:36 ` convert INT to CHAR but print's BEEP Jeff Woods
-- strict thread matches above, loose matches on Subject: below --
2003-11-24 11:10 mixing C/C++ Elias Athanasopoulos
2003-11-24 12:18 ` Steven Shaw
2003-11-24 17:55 ` Elias Athanasopoulos
2003-11-25 2:21 ` Steven Shaw
2003-11-25 10:49 ` elathan
2003-11-25 11:42 ` Glynn Clements
2003-11-25 13:12 ` elathan
2003-11-26 2:09 ` Glynn Clements
2003-12-02 18:22 ` Elias Athanasopoulos
2003-11-25 16:32 ` Steven Shaw
2003-11-24 18:44 ` Dari'o Mariani
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='003301c3a79b$643573e0$caba0ba4@uwe.ac.uk' \
--to=matthew.studley@uwe.ac.uk \
--cc=elathan@phys.uoa.gr \
--cc=linux-c-programming@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.