From: Dennis Newbold Date: 2002-03-29T09:19:16+09:00 Subject: Re: Ruby SWIG problems Hi James, One final thought. I'm a little confused as to why you would want to wrap a C++ class, when Ruby already supports classes. Wouldn't it make more sense to declare the class in Ruby, and have each Ruby method do its work by calling a regular C routine? In addition, Ruby may not be able to properly connect to your C++ code due to name-mangling. And, if you can figure out how to properly match the name mangling method used by a given compiler, then you'll have problems porting it to a different C++ compiler which may use a different nmae mangling scheme. It seems like too much work for too little payback, if you ask me. Course, thats just my take, and I don't know the "big picture" as you do. Take care. Dennis --------------------------------------------- | | | The way to be happy is to be good | | | --------------------------------------------- On Thu, 28 Mar 2002, James Adam wrote: > Hi > > I've been trying to use Ruby SWIG, but been having limited success. > Currently I'm using SWIG 1.3.11, and Ruby 1.7.2 ('stable' ruby versions have > given me even less success than below). Here's the scoop: > > i've got 3 files: > > /* File : example.h -------------------*/ > > class TestClass { > public: > TestClass(); > int result; > > int add(int x, int y); > }; > > /* File : example.cxx ------------------*/ > > #include "example.h" > > TestClass::TestClass() { > result = 0; > } > > int TestClass::add(int x, int y) { > result = x + y; > return result; > }; > > /* File : example.i ----------------------*/ > %module example > %include example.h > > /*---------------------------------------*/ > > ....and i run the following commands, all via cygwin (Ruby & SWIG both also > compiled using cygwin): > > $ swig -c++ -ruby example.i > $ gcc -c example.cxx > $ gcc -c example_wrap.cxx -I/usr/local/lib/ruby/1.6/i386-cygwin > $ gcc -shared example.o example_wrap.o -o example.so -lcygwin-ruby17 > > .... all with no errors. Now when i try and use my new module 'example' - i > get this: > > $ irb > TypeError: wrong argument type Fixnum (expected Class) > from (irb):1:in `require' > from (irb):1 > irb(main):002:0> > > Anyone have any ideas? I've tried using different class definitions, etc etc > but with no joy. > > Thanks > > James > > >