# Ruby and C++

**URL:** <https://www.ruby-forum.com/t/ruby-and-c/95525>\
**Category:** Ruby\
**Created:** [January 18, 2006, 5:52pm UTC](https://www.ruby-forum.com/t/ruby-and-c/95525 "2006-01-18T17:52:30Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![SteveD](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c4cdca/32.png) [@SteveD](https://www.ruby-forum.com/u/SteveD)\
**Post date:** [January 18, 2006, 5:52pm UTC](https://www.ruby-forum.com/t/ruby-and-c/95525/1 "2006-01-18T17:52:30Z")

</div>

hey everyone,  
im trying to write a script as well as a program each of which can  
communicate with one another. the script should be able to have access  
to the class in my c++ code. just a simple class with a couple of  
variable and some accessors and modifiers for them. i want to be able  
to create an object of that class type in the script and call the  
classes functions in order to manipulate the data. at this point i can  
create an object in the script and it seems that i can modify the object  
through the set methods, but when i call the get method for that  
function it get an error saying it is expecting the class type as the  
return type(i assume thats what the error means… “in ‘getInt’: wrong  
type - expected DummieClass”)  
for all of my set methods i return self. for the get methods i return a  
VALUE object which should be holding the value of the class member i am  
working with.

* * *

c++ code:

static VALUE \_wrap\_get\_int(VALUE self)  
{  
GET\_MY\_CLASS(self); //a macro that returns an instance pointer of  
my class

```
//this function call returns a VALUE after converting the c++ int
return GetRubyInt(pDummie->getInt());

```

}

* * *

ruby script:

obj = SimpleExt::Dummie.new(12,3.4, “my String”)  
obj.setInt(100)  
x = obj.getInt()

print x

* * *

it seems to be crashing out when it gets to the line x = obj.getInt().  
can anyone tell me whats wrong with this, or am i going about this the  
wrong way? im thinking that i may have to change my c++ code around,  
but i dont know. if anyone could lend some adive i would appreciate it.  
thanks  
steveD

---

<div class="post-metadata">

**Author:** ![SteveD](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c4cdca/32.png) [@SteveD](https://www.ruby-forum.com/u/SteveD)\
**Post date:** [January 18, 2006, 6:03pm UTC](https://www.ruby-forum.com/t/ruby-and-c/95525/2 "2006-01-18T18:03:28Z")

</div>

I can’t speak to the specific problem you’re running into. However, I  
can recommend using SWIG for this sort of thing. I think it makes this  
kind of integration much easier. I created a presentation on this that  
you can read at [Simplified Wrapper and Interface Generator (SWIG) | Object Computing, Inc.](http://www.ociweb.com/jnb/jnbJan2006.html). It mostly  
focuses on using SWIG to invoke C++ from Java, but at the end there is  
a Ruby example.

---

<div class="post-metadata">

**Author:** ![SteveD](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c4cdca/32.png) [@SteveD](https://www.ruby-forum.com/u/SteveD)\
**Post date:** [January 18, 2006, 6:03pm UTC](https://www.ruby-forum.com/t/ruby-and-c/95525/3 "2006-01-18T18:03:28Z")

</div>

On 1/18/06, SteveD [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> return type(i assume thats what the error means… "in ‘getInt’: wrong  
> GET\_MY\_CLASS(self); //a macro that returns an instance pointer of  
> obj.setInt(100)  
> x = obj.getInt()
> 
> print x
> 
> * * *
> 
> it seems to be crashing out when it gets to the line x = obj.getInt().  
> can anyone tell me whats wrong with this, or am i going about this the  
> wrong way? im thinking that i may have to change my c++ code around,  
> but i dont know. if anyone could lend some adive i would appreciate it.

It would help if you could post the entire code. Or at least, some  
sample code that exhibits the same behavior.

---

<div class="post-metadata">

**Author:** ![SteveD](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c4cdca/32.png) [@SteveD](https://www.ruby-forum.com/u/SteveD)\
**Post date:** [January 19, 2006, 7:40pm UTC](https://www.ruby-forum.com/t/ruby-and-c/95525/4 "2006-01-19T19:40:09Z")

</div>

On Thu, Jan 19, 2006 at 01:16:14AM +0900, SteveD wrote:

> classes functions in order to manipulate the data. at this point i can  
> create an object in the script and it seems that i can modify the object  
> through the set methods, but when i call the get method for that  
> function it get an error saying it is expecting the class type as the  
> return type(i assume thats what the error means… “in ‘getInt’: wrong  
> type - expected DummieClass”)

I suspect that it is the GET\_MY\_CLASS line that is raising the  
exception, so this probably has nothing to do with your return value.

As someone else pointed out, posting a complete minimal solution that  
reproduces the problem along with the exact output and the expected  
output is usually helpful in tracking these things down (plus sometimes  
when I put something like that together, I find the problem before I  
even post!)

Paul
