I updated my code to remove the initial underscores and removed the int
cast. The only compiler warnings are about unsupported optimization
options.
What could be wrong with the linking step? Here is my compile and link
output:
Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
cl -nologo -MD -Zi -O2b2xg- -G6 -I.
-Ic:/ruby/lib/ruby/1.8/i386-mswin32 -Ic:/ruby/lib/ruby/1.8/i386-mswin32
-I.
-IC:/Views/michaelh_ips3.0_priv/Software/tools/ciphero/
com.cipheroptics.smartlib/win32/include -I. -I./.. -I./../missing -c
-Tcsmartlib_wrap.c
cl : Command line warning D4029 : optimization is not available in the
standard edition compiler
cl : Command line warning D4002 : ignoring unknown option '-Og-'
smartlib_wrap.c
cl -nologo -LD -Fesmartlib.so smartlib_wrap.obj
msvcrt-ruby18.lib smbw32vc.lib oldnames.lib user32.lib advapi32.lib
wsock32.lib -link -incremental:no -debug -opt:ref -opt:icf -dll
-libpath:"C:/Views/michaelh_ips3.0_priv/Software/tools/ciphero/
com.cipheroptics.smartlib/win32/lib" -libpath:"c:/ruby/lib"
-def:smartlib-i386-mswin32.def
Creating library smartlib.lib and object smartlib.exp
On Aug 18, 2004, at 8:08 AM, Paul Brannan wrote:
> 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
>
>
>
>
"OS X: because it was easier to make UNIX user-friendly than to fix
Windows"