Tadamasa Teranishi
yw3t-****@asahi*****
2010年 1月 9日 (土) 18:23:41 JST
寺西です。 fukum****@amber***** wrote: > > >> > mecab_new2 の引数に渡す文字列は、SouceText ではありませんよ。 > >> > >> VB2005のサンプルコードで String.Empty を渡しているものがあったので、 > >> vbNullString を渡してみました。 > > > > それは明らかな間違いです。 > > 引数を空にしたいのなら、mecab_new2("") としなければなりません。 これは正しいのですが、 > この方法を試してみたところ、 > 「実行時エラー'49': DLLが正しく呼び出せません。」という > エラーが出てしまいました。 これの理由は別にありました。 libmecab.dll の呼出規約が __cdecl だからでした。 VBA から利用するには libmecab.dll の呼出規約を __stdcall に変更して コンパイルし直す必要があります。 そのためには - 関数に __stdcall を追加して - .DEF ファイルを作成して libmecab.dll を作成し直す必要があります。 と、いう回答だけだとあんまりなので、乗りかかった船なので、 これとは別に VBA から呼び出せるラッパDLL(mecab_wrap.dll)を 作りました。 4つの関数しかサポートしていませんが、とりあえず Excel から呼び出せる ようになりました。 http://namazu.asablo.jp/blog/2010/01/09/4804430 mecab_wrap.dll に関する質問は私の方にしてください。 -- ===================================================================== 寺西 忠勝(TADAMASA TERANISHI) yw3t-****@asahi***** http://www.asahi-net.or.jp/~yw3t-trns/index.htm Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E