Joe Van Dyk
12/12/2005 3:29:00 AM
On 12/11/05, Joe Van Dyk <joevandyk@gmail.com> wrote:
> On 12/11/05, Joe Van Dyk <joevandyk@gmail.com> wrote:
> > On 12/11/05, Joe Van Dyk <joevandyk@gmail.com> wrote:
> > > Anyone got any good resources on embedding C into Ruby? The ones I
> > > found were a couple years old (i.e. for 1.6).
> > >
> > > What I'd like to do is be able to call Ruby functions from the C code
> > > (don't care about return value here), and be able to call C functions
> > > (and get the return data) from the Ruby code.
> >
> > I created a Ruby extension in C called 'functions.so'. My ruby script
> > is require'ing it.
> >
> > When I launch the Ruby script via ruby_run() in C, I get 'no such file
> > to load -- functions' error.
>
> Aha, calling ruby_init_loadpath() did the trick.
>
> Essentially, I have a C program. I want to create a GUI (using
> ruby-gnome2) that can call the C program's functions and process and
> report its data.
>
> Originally, I added a small UDP server to the C program that would
> listen for UDP messages from the Ruby GUI and that's how they
> exchanged information. The process of creating all the message
> formats for the UDP messages was a pain in the butt though. So I'm
> thinking of a different approach (embedding a Ruby program in the C
> executable and create Ruby extensions for calling the C functions).
Is this a reasonable approach:
int main()
{
initialize ruby stuff
create glib thread (or maybe pthread)
{
run ruby script that starts the GUI
}
}