[mecab-users 397] Re: Excel VBA からMeCabを使用するには?

アーカイブの一覧に戻る

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




mecab-users メーリングリストの案内
アーカイブの一覧に戻る