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