On Wed, Aug 18, 2004 at 05:42:59AM +0900, Michael Hale wrote: > static VALUE > _wrap_NSSocketLink(int argc, VALUE *argv, VALUE self) { All identifiers that begin with an underscore are reserved for use by the compiler. This probably isn't your problem, but you should remove the leading underscore anyway. > char *arg1 ; > int arg2 ; > int arg3 ; > int result; > VALUE vresult = Qnil; > > if ((argc < 3) || (argc > 3)) > rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc); > arg1 = StringValuePtr(argv[0]); > arg2 = NUM2INT(argv[1]); > arg3 = NUM2INT(argv[2]); > printf("before\n"); > result = (int)NSSocketLink(arg1,arg2,arg3); This cast should be unnecessary. If your compiler is giving you warnings, adding a cast here just hides the problem (namely that you may have forgotten to include the header that declares NSSocketLink). If this doesn't help, then perhaps there is something wrong with the linking step? Paul