Guy,
 
Wow! What can I say? Many thanks for looking at this problem. And so
quickly. I'm in awe.
 
I'll take a long look at my setup. I didn't have the ruby init stuff you
put in your ruby.i, but I'd put that in my embedded C code. I'll
experiment with this.
 
Many thanks again for your help. I'm really appreciative.
 
Best regards,
Peter Munro
 
 
>>>>>> "P" == Peter Munro  writes:
>
>P> I'm running:
>P> Ruby 1.67
>P> Perl 5.6.1
>P> swig 1.3
>
>Well there is a problem
>
>pigeon% ls
>a.pl* regdb.i ruby.i
>pigeon%
>
>pigeon% cat regdb.i
>%module regdb
>%{
>#include "ruby.h"
>%}
>%include ruby.i
>pigeon%
>
>
>pigeon% cat ruby.i
>%{
>static int initi = 0;
>%}
>
>%inline %{
>
>int init(void) {
>if (!initi) {
>ruby_init();
>ruby_init_loadpath();
>initi = 1;
>}
>return 0;
>}
>
>char *runruby(char *c) {
>VALUE res;
>int error = 0;
>
>if (!initi) {
>init();
>}
>res = rb_eval_string_protect(c, &error);
>if (error) {
>res = rb_gv_get("$!");
>}
>res = rb_obj_as_string(res);
>return RSTRING(res)->ptr;
>}
>
>%}
>
>pigeon%
>
>
>swig was compiled with :
>
>./configure --prefix=/home/ts/local/sw --enable-perl5
--with-ruby=/home/ts/local/r167/bin/ruby >
>pigeon% ~/local/sw/bin/swig -version
>
>SWIG Version 1.3.14u-20020813-1606
>Copyright (c) 1995-1998
>University of Utah and the Regents of the University of California
>Copyright (c) 1998-2001
>University of Chicago
>
>Compiled with CC
>pigeon%
>
>pigeon% perl -v
>
>This is perl, v5.6.1 built for i386-linux
>
>Copyright 1987-2001, Larry Wall
>
>Perl may be copied only under the terms of either the Artistic License
or the >GNU General Public License, which may be found in the Perl 5
source kit. >
>Complete documentation for Perl, including FAQ lists, should be found on
>this system using `man perl' or `perldoc perl'. If you have access to the
>Internet, point your browser at http://www.perl.com/, the Perl Home Page.
>
>pigeon%
>
>pigeon% ~/local/r167/bin/ruby -v
>ruby 1.6.7 (2002-03-01) [i686-linux]
>pigeon%
>
>
>pigeon% ~/local/sw/bin/swig -perl regdb.i
>pigeon%
>
>pigeon% gcc -c regdb_wrap.c -I/usr/lib/perl/5.6.1/CORE -Dbool=char
-I/home/ts/local/r167/lib/ruby/1.6/i686-linux >In file included from
/home/ts/local/r167/lib/ruby/1.6/i686-linux/ruby.h:610, >from
regdb_wrap.c:515:
>/home/ts/local/r167/lib/ruby/1.6/i686-linux/intern.h:258: warning:
`yyparse' redefined >/usr/lib/perl/5.6.1/CORE/embed.h:756: warning: this
is the location of the previous definition
>/home/ts/local/r167/lib/ruby/1.6/i686-linux/intern.h:259: warning:
`yylex' redefined >/usr/lib/perl/5.6.1/CORE/embed.h:755: warning: this is
the location of the previous definition
>/home/ts/local/r167/lib/ruby/1.6/i686-linux/intern.h:260: warning:
`yyerror' redefined >/usr/lib/perl/5.6.1/CORE/embed.h:751: warning: this
is the location of the previous definition >pigeon%
>
>pigeon% ld -shared regdb_wrap.o -L/home/ts/local/r167/lib -lruby -ldl
-lm -lcrypt -o regdb.so >pigeon%
>
>pigeon% cat a.pl
>#!/usr/bin/perl -l
>use regdb;
>$res = regdb::runruby("
>require 'digest/md5'
>Digest::MD5.new('hello')
>");
>print $res;
>pigeon%
>
>pigeon% a.pl
>5d41402abc4b2a76b9719d911017c592
>pigeon%
>
>
>
>Guy Decoux
>