こんばんは。にゃす@3web です。
メール読むのサボってたらタイミング悪すぎ....

Sat, 29 Jan 2000 20:26:05 +0900 :Masaki Suketa<CQN02273 / nifty.ne.jp> wrote

Masaki> で,nyasu さんが頑張って 0.0.7 のコンパイルを通すことには成功したよう
Masaki> です.

実は、[ruby-dev:8634]の情報抜きでlcc-win32でやってたのでした。
わたなべさんの情報を元にして、またやってみます。
(我ながらとても間抜け)

#lcc-win32のヘッダは、union/structの名無しが多くて面倒じゃありませんでした?

で、lcc-win32を使ったこちらのwin32ole.dllは、
おそらく助田さんの作られたcygwin版win32ole0.0.4と同程度の物だと思われます。
こちらもcore吐きますので。

メモ書きによると変更点は 
・__int64, __uint64を定義してやる(long long)
・VARIANT_TRUEとVARIANT_FALSEを定義(0xffffと0)
・ヘッダファイル中#define/typedefで2回以上定義されるものが出てくるのを処理
 (私は乱暴にもコメントアウトしました)
・理由がよくわかりませんが、typedefでこけるものがあるのでこれもコメントアウト
・gccが名無しのstruct/unionを許してくれないので適当に名前を付けます。
  50個くらい?
  これに付随してV_UNION()マクロと、win32ole.c中の1カ所を変更する必要あり。
・STDMETHODIMPマクロが引数無しで呼ばれるときエラーになるので、
  win32ole.cの中で自分で展開
・_stdcallが定義されてない臭いのですが、#define _stdcall STDCALLで何とか


状況は
sample/excel1.rbの  7:workbook = application.Workbooks.Add(); でSEGV (excelが残る)
sample/excel2.rbの 13:excel.Workbooks.Add(); でSEGV (非表示excelが残る)
sample/excel3.rbの  7:workbook = application.Workbooks.Add(); でSEGV (excelが残る)
sample/ie.rbの      不安定らしい。前は正常終了してたのに、今日はSEGVします。
                    ie.GoHomeは失敗したことがありません。
                    ie.navigateはちゃんと動かないかSEGVします。
sample/ieconst.rb   WIN32OLE_VERSION = 0.0.7 とだけ表示されて正常終了
sample/ienavi.rb    正常終了はする。URLが腐っている。
                   (今やってみたら謎の文字列が帰ってきました。今までは空でしたが)
sample/oledirs.rb   16:folder = fs.GetFolder(".") でSEGV

ということなので、引数まわりでミスしてるのかなと思ってます。
特にOLEは全然わかってないので、思い当たることがありましたら、
教えて下されば幸いです。

#mswin版を当方で作ろうとするなら、Borland C++で作らないといけないのですが
#実際に作られた方いらっしゃいます? 

__ 
☆ にゃす @3Web    <nyasu / osk.3web.ne.jp>
★     PGP指紋 24 DC 99 F5 3E 4A C2 07  AA 21 B4 0F 96 60 34 1D
※     公開鍵  http://www.threeweb.ad.jp/~nyasu/pgpkey.html