小松です。

19990828のGTk+ and GIMP for Windowsには、以下のように、
gdk_ic_attr_destroy()とgdk_ic_attr_new()が存在していない
ようで、mswin32でリンクに失敗してしまいます。

C:\lang\gtk>nmake
   ……
   ライブラリ gtk.lib とオブジェクト gtk.exp を作成中
rbgdkim.obj : error LNK2001: 外部シンボル "_gdk_ic_attr_destroy" は未解決です
rbgdkim.obj : error LNK2001: 外部シンボル "_gdk_ic_attr_new" は未解決です
gtk.dll : fatal error LNK1120: 外部参照 2 が未解決です。
NMAKE : fatal error U1077: 'cl' : リターン コード '0x2'
Stop.

C:\lang\gtk>

ということで、USE_XIMで判定してみましたが、mswin32でしか試して
ない (GTKはWIN32にしかインストールしていない) ので,適切な手段
かどうかわからないです。
extconf.rbでhavefunc("gdk_ic_attr_new")を使うとかの方がいいです
かね?

あと、src/global.hにset_gobject()のプロトタイプを追加しました。

パッチは、ruby-gtk-SNAPSHOT-19990924.tar.gzに対するものです。

diff -rup gtk.dist/src/global.h gtk/src/global.h --- gtk.dist/src/global.h Sun Sep 12 23:54:29 1999 +++ gtk/src/global.h Fri Sep 24 23:28:10 1999 @@ -176,6 +176,7 @@ extern VALUE cImlibImage; */ extern VALUE get_value_from_gobject(GtkObject* obj); extern GtkObject* get_gobject(VALUE obj); +extern void set_gobject(VALUE obj, GtkObject *gtkobj); extern GtkWidget* get_widget(VALUE obj); extern VALUE make_gobject(VALUE klass, GtkObject* gtkobj); extern VALUE make_widget(VALUE klass, GtkWidget* widget); diff -rup gtk.dist/src/rbgdk.c gtk/src/rbgdk.c --- gtk.dist/src/rbgdk.c Fri Sep 24 01:02:39 1999 +++ gtk/src/rbgdk.c Fri Sep 24 23:28:10 1999 @@ -635,6 +635,9 @@ extern void Init_gtk_gdk_color(); extern void Init_gtk_gdk_const(); extern void Init_gtk_gdk_draw(); extern void Init_gtk_gdk_event(); +#ifdef USE_XIM +extern void Init_gtk_gdk_im(); +#endif extern void Init_gtk_gdk_pixmap(); extern void Init_gtk_gdk_region(); extern void Init_gtk_gdk_rgb(); @@ -720,8 +723,10 @@ Init_gtk_gdk() /* Gdk::Rgb */ Init_gtk_gdk_rgb(); +#ifdef USE_XIM /* Gdk::IM, Gdk::IC, Gdk::ICAttr */ Init_gtk_gdk_im(); +#endif /* Gdk module constants */ Init_gtk_gdk_const(); /* keysym constants */ diff -rup gtk.dist/src/rbgdkim.c gtk/src/rbgdkim.c --- gtk.dist/src/rbgdkim.c Sun Sep 12 19:32:54 1999 +++ gtk/src/rbgdkim.c Fri Sep 24 23:28:10 1999 @@ -1,5 +1,6 @@ #include "global.h" +#ifdef USE_XIM /* * Gdk::IM */ @@ -315,3 +316,4 @@ Init_gtk_gdk_im() rb_define_method(gdkICAttr, "preedit_colormap", gdkicattr_preedit_cmap, 0); rb_define_method(gdkICAttr, "preedit_colormap=", gdkicattr_set_preedit_cmap, 1); } +#endif /* USE_XIM */ -- 小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>