# SWIG Passing Ruby structure arrays into C DLL

**URL:** <https://www.ruby-forum.com/t/swig-passing-ruby-structure-arrays-into-c-dll/132503>\
**Category:** Ruby\
**Created:** [March 20, 2008, 7:54pm UTC](https://www.ruby-forum.com/t/swig-passing-ruby-structure-arrays-into-c-dll/132503 "2008-03-20T19:54:52Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![jjrussell](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/8baadc/32.png) [@jjrussell](https://www.ruby-forum.com/u/jjrussell)\
**Post date:** [March 20, 2008, 7:54pm UTC](https://www.ruby-forum.com/t/swig-passing-ruby-structure-arrays-into-c-dll/132503/1 "2008-03-20T19:54:52Z")

</div>

I have a structure defined in my DLL

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

And a function

```auto
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.

```auto
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
