スポンサーリンク
スポンサーリンク

C#でMeCabを使って形態素解析を行う場合

C#

VisualStudio2017 C#(.NetFrameword 4.7.1)で、MeCab(0.996)のlibmecab.dllを参照し形態素解析を行う場合、下記のソースでMeCabの解析結果を得ることができる。


strResult変数には、下記実行結果が出力される。


libmecab.dllを使用する場合、下記2つに気を付けないとはまる。


1、libmecab.dllを参照しているプロジェクトはx86で実行しないといけない。

x64やAnyCPUで実行すると、mecab_new2(“”)メソッド実行時に「間違ったフォーマットのプログラムを読み込もうとしました。 (HRESULT からの例外:0x8007000B)」例外が発生する。

1


2、DllImport()の定義には、「CallingConvention = CallingConvention.Cdecl」を記述しないといけない。

「CallingConvention = CallingConvention.Cdecl」を記述していないと、mecab_new2(“”)メソッド実行時に「MeCabテスト!MeCabテスト.Program::mecab_new2′ がスタックを不安定にしています。PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。呼び出し規約、および PInvoke シグネチャのパラメーターがターゲットのアンマネージ シグネチャに一致していることを確認してください。’」例外が発生する。

コメント

タイトルとURLをコピーしました