Taku Kudo
taku****@chase*****
2006年 4月 18日 (火) 03:15:44 JST
rsk様 ご報告ありがとうございます。 mecab 0.91 のアジェンダに追加しておきました。 次のバージョンで修正します。 On 4/16/06, rsk <rsky0****@gmail*****> wrote: > はじめまして、rsk と申します。 > > MeCab の PHP モジュールを作っている際に mecab_new2(), mecab_nbest_next_tostr2(), > mecab_format_node() が利用できない現象に遭遇したので報告いたします。 > > さらに libmecab を nm で調べてみたところ、本来 _mecab_new2 とあるべき箇所が > __Z10mecab_new2Pc となっていました。他の2つの関数についても同様でした。 > > 環境は、Mac OS X 10.4.6 (ppc) と FreeBSD 6.0 (i386) です。 > > どうやら mecab.h にあるプロトタイプと libmecab.cpp のコードとで > 返り値および引数の型が異なるのが原因のようで、以下のように修正すれば > 上記のエラーが出ず、関数が利用できるようになりました。 > C言語を学び始めて間も無く、不備があるかもしれませんが参考になれば幸いです。 > > --- mecab-0.90.orig/src/libmecab.cpp 2006-03-03 10:37:35.000000000 +0900 > +++ mecab-0.90/src/libmecab.cpp 2006-04-15 23:05:15.000000000 +0900 > @@ -63,7 +63,7 @@ > return c; > } > > -mecab_t* mecab_new2 (char *arg) > +mecab_t* mecab_new2 (const char *arg) > { > mecab_t *c = new mecab_t; > MeCab::Tagger *ptr = MeCab::createTagger(arg); > @@ -165,10 +165,10 @@ > return t->next (); > } > > -const char* mecab_nbest_next_tostr2 (mecab_t* c, char *out, size_t len2) > +char* mecab_nbest_next_tostr2 (mecab_t* c, char *out, size_t len2) > { > MECAB_CHECK_FIRST_ARG(c,t); > - return t->next (out, len2); > + return const_cast<char *>(t->next (out, len2)); > } > > mecab_node_t* mecab_nbest_next_tonode (mecab_t* c) > diff -ur mecab-0.90.orig/src/mecab.h mecab-0.90/src/mecab.h > --- mecab-0.90.orig/src/mecab.h 2006-01-14 02:00:44.000000000 +0900 > +++ mecab-0.90/src/mecab.h 2006-04-15 22:58:18.000000000 +0900 > @@ -159,9 +159,9 @@ > MECAB_DLL_EXTERN int mecab_nbest_init (mecab_t*, > const char*); > MECAB_DLL_EXTERN int mecab_nbest_init2 (mecab_t*, > const char*, size_t); > MECAB_DLL_EXTERN const char* mecab_nbest_next_tostr (mecab_t*); > - MECAB_DLL_EXTERN char* mecab_nbest_next_tostr2 (mecab_t*, > const char*, size_t); > + MECAB_DLL_EXTERN char* mecab_nbest_next_tostr2 (mecab_t*, > char*, size_t); > MECAB_DLL_EXTERN mecab_node_t* mecab_nbest_next_tonode (mecab_t*); > - MECAB_DLL_EXTERN const char* mecab_format_node (mecab_node_t*); > + MECAB_DLL_EXTERN const char* mecab_format_node (mecab_t*, > mecab_node_t*); > MECAB_DLL_EXTERN int mecab_tool (int argc, > char **argv); > #endif > > -- > /** > * Ryusuke SEKIYAMA > * rsky0****@gmail***** > */ > _______________________________________________ > mecab-users mailing list > mecab****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/mecab-users > >