artonさんが作ってくださったパッチを取り込んで
CygwinのMingw64でコンパイルしてみた。
compiling win32ole
gcc -I. -I../../.ext/include/i386-cygwin -I../../../../../../svn/ruby/trunk/in
clude -I../../../../../../svn/ruby/trunk/ext/win32ole -DRUBY_EXTCONF_H=\"extco
nf.h\" -O3 -g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith
-Wwrite-strings -Wno-missing-field-initializers -Wno-long-long -o win32ole.o
-c ../../../../../../svn/ruby/trunk/ext/win32ole/win32ole.c
../../../../../../svn/ruby/trunk/ext/win32ole/win32ole.c:230: 警告: 'thread'
attribute directive ignored
gcc -shared -s -o ../../.ext/i386-cygwin/win32ole.so win32ole.o -L. -L../..
-L. -Wl,--enable-auto-image-base,--enable-auto-import -lruby191 -ladvapi32
-lkernel32 -luser32 -luuid -loleaut32 -lole32 -lpthread -lrt -ldl -lcrypt
win32ole.o: In function `Init_win32ole':
../../../../../../svn/ruby/trunk/ext/win32ole/win32ole.c:9385: undefined
reference to `_IID_IGlobalInterfaceTable'
../../../../../../svn/ruby/trunk/ext/win32ole/win32ole.c:9385: undefined
reference to `_CLSID_StdGlobalInterfaceTable'
collect2: ld はステータス 1 で終了しました
make[1]: *** [../../.ext/i386-cygwin/win32ole.so] エラー 1
declspec(thread) には対応していないみたいなので、そこは、まあ、修正するとして...。
うーん。-luuid つけているけど駄目なのか。Cygwin の gcc4 も試したけど同じだ。
$ nm /usr/lib/w32api/lib*.a | grep IID_IGlobalInterfaceTable
$
$ nm /usr/lib/w32api/lib*.a | grep CLSID_StdGlobalInterfaceTable
$
念のため、IID_IUnknown なら見つかるはずだと思って確認。
$ nm /usr/lib/w32api/lib*.a | grep IID_IUnknown
00000000 R _IID_IUnknown
$
うーん。IID_IGlobalInterfaceTable と CLSID_StdGlobalInterfaceTable は無いのか?
どうしたもんか。
最近のコメント