« [Ruby] Thread と Win32OLE | トップページ | [Program] TLS »

2010年10月 3日 (日)

[Ruby] Win32OLEとThread

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 は無いのか? どうしたもんか。

|

« [Ruby] Thread と Win32OLE | トップページ | [Program] TLS »

コメント

#if !defined で囲うのが良いのですかね。以下が値です。
(ObjIdl.h)IGlobalInterfaceTable "00000146-0000-0000-C000-000000000046"

CLSID_StdGlobalInterfaceTable "{00000323-0000-0000-C000-000000000046}"

あと、一応、るりまでは以下のように現時点の制限としておきました。
http://rurema.clear-code.com/1.9.2/class/WIN32OLE.html

投稿: arton | 2010年10月 3日 (日) 11時37分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [Ruby] Win32OLEとThread:

« [Ruby] Thread と Win32OLE | トップページ | [Program] TLS »