C++でMeCabを使ってみる。

http://mecab.googlecode.com/svn/trunk/mecab/doc/libmecab.html のサンプルを参考にした。
ページの下にコンパイル方法が書いてある。

#include <iostream>
#include <mecab.h>

int main(int argc, char **argv){
  char input[1024] = "太郎は次郎が持っている本を花子に渡した。";

  MeCab::Tagger *tagger = MeCab::createTagger("");
  const char *result = tagger->parse(input);

  std::cout << "INPUT: " << input << std::endl;
  std::cout << "RESULT: " << result << std::endl;

  return 0;
}

コンパイルは「gcc -I/usr/local/include test.cpp -L/usr/local/lib -lmecab」で通した。
コンパイラのオプションの意味は下記。

-llibrary
名前が library であるライブラリをリンク時に使用します。

リ ンカは、標準のライブラリ用ディレクトリのリスト中から、実際のファイル名
が ‘liblibrary.a’ であるファイルを検索します。リンカはこのファイルを、 フ
ァイル名で直接指定した場合と同様に使用します。

検索するディレクトリには、いくつかの標準システムディレクトリと、‘-L’ によ
って指定したディレクトリが含まれます。

通常、この方法で発見されるファイルはライブラリファイル、つまりいくつか の
オ ブジェクトファイルをメンバとして含むアーカイブファイルです。リンカは、
アーカイブファイルの中を検索して、参照されているが定義されていないシン ボ
ル を定義しているメンバを探し出します。しかし、もしリンカがライブラリでな
く通常のオブジェクトファイルを発見した場合は、そのオブジェクトファイル を
通常の方法でリンクします。‘-l’ オプションを使用する場合とファイル名を直接
指定する場合の違いは、‘-l’ の場合が library を ‘lib’ と ‘.a’ で囲み、いく
つものディレクトリを検索することだけです。

-Ldir ディレクトリdir を ‘-l’ による検索が行なわれるディレクトリのリストに加 え
ます。

-I- ‘-I-’ オプション指定前に ‘-I’ オプションによって指定された全てのディレ ク
ト リは、‘#include "file"’ の形式によってのみ検索されます。これらのディレ
クトリは ‘#include ’ によっては検索されません。

‘ -I-’ オプション指定後に ‘-I’ で指定したディレクトリは、 全 て の ‘#in-
clude’ 命令によって検索されます。(通常は 全ての ‘-I’ で指定されたディレク
トリはこの方法で検索されます。)

これに加えて ‘-I-’ オプションは、カレントディレクトリ (現在の入力ファイル
が存在するディレクトリ) が ‘#include "file"’ に対する最初の検索対象となる
ことを抑制します。‘-I-’ によるこの効果を上書きする方法はありません。‘-I.’
を 指定することによって、コンパイラが起動されたディレクトリが検索されるこ
とを指定することは可能です。これはプリプロセッサが行なうデフォルトの動 作
とは異なりますが、たいていはこれで十分です。

‘-I-’ は、ヘッダファイルの検索に標準のシステムディレクトリを使うことを抑
制するわけではありません。従って、‘-I-’ と ‘-nostdinc’ は独立です