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

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

C#Visual Studio形態素解析

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)」例外が発生する。

 

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

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

 

コメント

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