From: Katsuyuki Komatsu Date: 1999-07-28T18:49:09+09:00 Subject: [ruby-dev:7464] Re: ext DLL on mswin32 小松です。 In the message of [ruby-dev:7463] ext DLL on mswin32 (Re: AC_OBJEXT) on 1999/7/28 17:51:22 Koji Oda wrote: |以前、mswin32 で拡張モジュールをDLL化するためにwin32.hに |以下を追加してもらいました。 win32.hでしたか。見落としてました。 |まず、rubymw.dll をmakeする際に -DEXPORT を指定して作成してください。 |次に、拡張モジュールをmakeする際に -DIMPORT を指定すると、rb_cObject |等の変数に関するアクセスは解決されると思います。 なるほど。ではCCDLFLAGSを変更すればよいですね。 [ruby-dev:7430]のパッチに対するパッチです。 rubymw.dll作成時の-DEXPORTはruby.defがあるのでなくても大丈夫です。 --- win32/config.status-ruby-dev-7430 Mon Jul 26 16:06:27 1999 +++ win32/config.status Wed Jul 28 18:15:36 1999 @@ -48,7 +48,7 @@ s%@XLDFLAGS@%%g s%@DLDFLAGS@%%g s%@STATIC@%%g -s%@CCDLFLAGS@%%g +s%@CCDLFLAGS@%-DIMPORT%g s%@LDSHARED@%cl -LD%g s%@DLEXT@%dll%g s%@STRIP@%%g あと、ruby-gtkでは、 rb_argv rb_argv0 を参照していますので、intern.hも変える必要があるのですが、 intern.hなのでちょっとためらってしまいます。 Index: intern.h =================================================================== RCS file: /home/cvs/ruby/intern.h,v retrieving revision 1.1.1.2.2.10 diff -u -p -r1.1.1.2.2.10 intern.h --- intern.h 1999/06/09 09:21:14 1.1.1.2.2.10 +++ intern.h 1999/07/28 09:39:24 @@ -243,7 +243,8 @@ void rb_set_kcode _((const char*)); int rb_ignorecase_p _((void)); void rb_match_busy _((VALUE, int)); /* ruby.c */ -extern VALUE rb_argv0; +EXTERN VALUE rb_argv; +EXTERN VALUE rb_argv0; void rb_load_file _((char*)); void ruby_script _((char*)); void ruby_prog_init _((void)); / / / なお、ruby-gtk-0.20に対しては以下の変更が必要です。 --- gtk/src/global.h.dist Tue Jul 13 20:31:41 1999 +++ gtk/src/global.h Wed Jul 28 18:44:02 1999 @@ -10,7 +10,7 @@ extern void notimplemented _((void)) NORETURN; -extern VALUE rb_cData; +EXTERN VALUE rb_cData; extern VALUE glist2ary(GList* list); extern GList* ary2glist(VALUE ary); --- gtk/src/init.c.dist Tue Jul 13 18:52:02 1999 +++ gtk/src/init.c Wed Jul 28 18:43:39 1999 @@ -3,7 +3,7 @@ extern void Init_gtk_gtk(); extern void Init_gtk_gdk(); -extern VALUE rb_argv, rb_argv0; +EXTERN VALUE rb_argv, rb_argv0; static void gtkerr(mesg) -- 小松克行 / Katsuyuki Komatsu ruby-gtkでは、ruby.cのrb_argvとrb_argv0も