From: Christian Kaiser Date: 2004-05-28T22:02:10+09:00 Subject: Re: Calling a c function from ruby? Well in C you only get VALUE. To get a char*, you use rb_str2cstr() to get the string and its length: myfunc(VALUE v) { char* pc = rb_str2cstr(v,NULL); } To get a char*[], you need to walk the array (passed in VALUE) and get the strings using the above function. I guess using rb_ary_each(), you can walk the array. To get a BYTE*, you also use rb_str2cstr() - remember, a string may contain any character, including '\0': myfunc(VALUE v) { long len; BYTE* data = rb_str2cstr(v,&len); } (There are newer APIs like StringValue() and StringValuePtr(), you might check those also...) Christian "Randy Lawrence" schrieb im Newsbeitrag news:F_ztc.15523$eH1.6931874@newssvr28.news.prodigy.com... > I'm having trouble calling a c function from ruby and haven't been able > to find a solution using google. > > Specifically, I'd like to call functions that receive these three datatypes: > > char* > char*[] > byte[] > > Swig 1.3 has been great in helping me call a c++ function that uses a > std::string parameter but the 3 c datatypes mentioned above are eluding me. > > Thanks.