小田@QNES です。

ありがとうございます。解決しました(^^)

---
On Mon, 5 Oct 1998 16:17:47 +0900
KIMURA Koichi <kkimura / pure.cpdc.canon.co.jp> wrote:

> 
> 木村です。
> 
> >    cHOGE = rb_define_class("HOGEHOGE", cObject);
> >とすると。
> >
> >class.c:99行目
> >    RBASIC(klass)->klass = singleton_class_new(RBASIC(super)->klass);
> >
> >で、access vioration例外します。
> >
> >    cHOGE = rb_define_class("HOGEHOGE", 0);
> >とするとうまくいきますので、cObject のexportが変になっているのかなぁ
> >と思っているのですが、詳しく調査はしていません。
> 
> 記憶している限りでは、参照するグローバル変数にきちんと __declspec()
> で属性をつけてやる必要があります。
> 
> この辺は手作業が必要だったような…

ruby.h を
#if defined(IMPORT)
#define DECLSPEC __declspec(dllimport)
#elif defined(EXPORT)
#define DECLSPEC __declspec(dllexport)
#else
#define DECLSPEC
#endif

#ifdef __MACOS__ /* name conflict, AERegistory.h */
extern VALUE cRubyObject;
#else
extern DECLSPEC VALUE cObject;
#endif

と変更して、
ruby のコンパイルフラグに /DEXPORT を追加してmake後
拡張モジュールのコンパイルフラグに /DIMPORT を追加して
make すると、例外しないで動作するようになりました。

rubyの各ファイル(object.c等)は変更なしでOKでした。

∪*****/\*****\/*****/\*****∪
  Koji Oda  NEC Software Kyusyu
  1st Development Department
   Based Software Division
  E-Mail:oda / bsd1.qnes.nec.co.jp
∩*****/\*****\/*****/\*****∩