From: Matt Date: 2006-02-24T06:22:50+09:00 Subject: C Extensions not working on Windows XP 64 I can not for the life of me get even the simplest C extension example to load into ruby on Windows XP. The first case I tried actually was the example provided by SWIG (the simple example). It fails with the message runme.rb:3:in `require': 127: The specified procedure could not be found. - In it_Example (LoadError) ./Example.dll from runme.rb:3 The example was compiled with the provided MS-VC++ 6 project without error. A dumpbin of example.dll reveals that the symbol Init_Example is in fact exported. The same error is reported in both ruby 1.6.8 and ruby 1.8.2. This is supposed to work in theory since it's 'automatically' generated by SWIG I then tried to generate my own example based on some tutorials. //--------------------simple.c------------------------------------------------ #include "ruby.h" static VALUE simple_initialize(VALUE self, int iValue) { rb_iv_set(self,"@i",iValue); rb_iv_set(self,"@a",rb_ary_new()); return self; } static VALUE simple_get_i(VALUE self) { return rb_iv_get(self,"@i"); } static VALUE simple_set_i(VALUE self, int iValue) { return rb_iv_set(self,"@i",iValue); } static VALUE simple_get_a(VALUE self) { return rb_iv_get(self,"@a"); } VALUE csimple; void Init_simple() { csimple = rb_define_class("simple",rb_cObject); rb_define_method(csimple,"initialize",simple_initialize,1); rb_define_method(csimple,"i", simple_get_i, 0); rb_define_method(csimple,"i=", simple_set_i, 1); rb_define_method(csimple,"a", simple_get_a, 0); } //--------------------------------------------------------------------- #----- simple.rb ------------ require "simple" s = simple.new(123) p s.i p s.a s.i = 456 s.a.push("Hello") s.a.push("World") p s.a #----------------------------- The compile procedure from MS-VC++ 6 cl /LD /I$(RUBY_INCLUDE) /O2 simple.c $(RUBY_LIBPATH)\$(RUBY_LIB) /link /def:simple.def which compiles without error or warning. dumpbin reveals that Dump of file simple.dll File Type: DLL Section contains the following exports for simple.dll 0 characteristics 43FE269D time date stamp Thu Feb 23 16:18:21 2006 0.00 version 1 ordinal base 1 number of functions 1 number of names ordinal hint RVA name 1 0 00001000 Init_simple Summary 4000 .data 1000 .rdata 1000 .reloc 5000 .text However running D:\ruby>ruby simple.rb ./simple.rb:4: undefined local variable or method `simple' for # (NameError) from simple.rb:2:in `require' from simple.rb:2 This is the result from running ruby 1.6.8 I might go back and try 1.8.2 again later, but for now I'll use python. At least SWIG seems to work with it on windows. -- Posted via http://www.ruby-forum.com/.