小田@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 ∩*****/\*****\/*****/\*****∩