SWIG Passing Ruby structure arrays into C DLL

I have a structure defined in my DLL

typedef struct _ABC{
 int a, b,c;
}ABC;

And a function

void func(int count, ABC * abc)
{
   ABC *tempabc = abc;
   for (int i=0; i< count; i++)
   {
      cout << tempabc->a << tempabc->b << tempabc->c << endl;
      tempabc++;
   }
}

The above is compiled into a DLL, say ABC_DLL that can be used in Ruby
using the SWIG interface.
In my ruby script, I create an array of ABC.

arr=Array.new
temp1 = ABC_DLL::ABC.new
temp1.a=1111
temp1.b=1111
temp1.c=1111
arr = arr << temp1
temp2 = ABC_DLL::ABC.new
temp2.a=2222
temp2.b=2222
temp2.c=2222
arr = arr << temp2
temp3 = ABC_DLL::ABC.new
temp3.a=3333
temp3.b=3333
temp3.c=3333
arr = arr << temp3

Question is how do I pass this array (arr) into the DLL function??

I tried

ABC_DLL::func(3,arr[0])

but my func in DLL prints out the following
1111 1111 1111
2434 342332 3423442 (some junk numbers)
2222 2222 2222

I would have expected something like

1111 1111 1111
2222 2222 2222
3333 3333 3333

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs