iPhoneからMeCabを呼びたい

iPhoneから形態素解析エンジン、MeCabを呼びたいのです。
MacOSやiPhoneではMeCabを使用しているので、呼べないものだろうか?

ここ数週間、会社の休み時間や帰ってから調べているんだけどわからない!
誰かヒント下さい!

やりたいこと

  • iPhoneで形態素解析をしたい。
  • できればiPhoneに入っているものを使用したい(辞書が結構なサイズなので)。

わかったこと

  • それっぽいライブラリは、libmecab_em.dylibとlibmecabra.dylibがある
  • 辞書は /Developer/Platforms/iPhoneXXX.platform/Developer/SDKs/iPhoneXXX.sdk/usr/lib/dic/ja/im/dicrc がある。
    imの他にもtokというディレクトリがある。jaの他にも sc(セーシェル共和国?) や tc (タークス諸島・カイコス諸島?) などがある。
  • フレームワークの追加から上記dylibを追加、—-dicdirを指定すれば、Cサンプルはビルド、動作できる(一部警告がでるが初歩的な問題なので割愛)。
  • (文字コードのことは考えずに)とりあえず実行してみると何かしら結果が得られるが内容は不明(ファイル出力した物)。
  • mecab_dictionary_info_tを取得して、辞書情報を見ると、文字コードはUTF-16LE、単語数は171884。
  • 入力をUTF-16LEにしてみると、mecab_sparse_tostrで落ちて結果は取得できない。

これからやること

  • gdbを使って、なぜ落ちているのか探る。
  • mecab_sparse_tostr2など他に使用できないか試してみる。 => mecab_sparse_tonode2でも落ちる。mecab_sparse_tostr2でも落ちる。
  • 自前でビルドしたmecab、辞書で試してみる。
  • SWIGを使ってObjective-Cにしてみる。
  • /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/include/mecab.h を見ると、#if 1 /* MECAB_APPLE_ENHANCEMENT */
    でmecab_path_tの定義で宣言されないようになっている変数がある。

備考

  • 僕のCとMac(その他諸々)の知識はお粗末…。