こんにちは その後分かったことなどのご報告します。 前回のメールの一部訂正 >// if (( model = mecab_model_new2( "-u C:\\Program Files (x86)\\MeCab\\dic\\ipadic\\fantasy.dic" )) == NULL ) この部分をコメント外しても別のエラーになります。ごめんなさい。 + m_pszData "viterbi.cpp(50) [tokenizer_->open(param)] tokenizer.cpp(127) [d->open(dicfile[i])] dictionary.cpp(79) [dmmap_->open(file, mode)] no such file or directory: C:\Program " wchar_t * static char *ppArgv[] = { "", "-u", "C:\\Program Files (x86)\\MeCab\\dic\\Fantasy\\fantasy.dic", 0, 0 }; if (( model = mecab_model_new( 3, ppArgv )) == NULL ) こちらで辞書のパスが正しくわたります。が、文字セットが違うといわれます。 + m_pszData "viterbi.cpp(50) [tokenizer_->open(param)] tokenizer.cpp(130) [sysdic->isCompatible(*d)] incompatible dictionary: C:\Program Files (x86)\MeCab\dic\Fantasy\fantasy.dic " wchar_t * libmecabをVisualStudioでx64debugビルドして、ある程度中身を追いかけられるように なりました。エラーになる箇所は CHECK_FALSE(sysdic->open (create_filename(prefix, SYS_DIC_FILE).c_str())) << sysdic->what(); この部分で、create_filenameへの引数は + prefix "C:\Program Files (x86)\MeCab\etc\..\dic\ipadic" std::basic_string<char,std::char_traits<char>,std::allocator<char> > #define SYS_DIC_FILE "sys.dic" 実際にcreate_filename側で観てみると std::string create_filename(const std::string &path, const std::string &file) { std::string s = path; + path "タケ,゙・" const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & + file "C:\Program Files (x86)\MeCab\etc\..\dic\ipadic" const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & Path,fileがずれているように観えました。最終的に libmecab.dll!MeCab::decode_charset(const char * charset) 行 80 C++ int decode_charset(const char *charset) { std::string tmp = charset; toLower(&tmp); if (tmp == "sjis" || tmp == "shift-jis" || tmp == "shift_jis" || tmp == "cp932") return CP932; decode_charsetに入った際の引数は + charset 0x0000000008e7f260 "" const char * となり、なぜか std::string tmp = charset; の行で"utf-8"に初期化されているようでした。 事前にsys.dicの文字セットは "shift-jis"と認識していました。ソースの場所コピルの忘れました。 ? std::basic_string<char,std::char_traits<char>,std::allocator<char> >::substr が返されました。 "config-charset" std::basic_string<char,std::char_traits<char>,std::allocator<char> > + key "config-charset" std::basic_string<char,std::char_traits<char>,std::allocator<char> > + line "config-charset = SHIFT-JIS" std::basic_string<char,std::char_traits<char>,std::allocator<char> > + this 0x000000000880f140 {conf_=[15](...) rest_=[-2972253](...) system_name_="" ...} MeCab::Param * const + value "SHIFT-JIS" std::basic_string<char,std::char_traits<char>,std::allocator<char> > libmecabのビルドはX64指定で行いましたが、アドレスやリファレンス渡しの引数の Bit数が違う?のかずれるのが原因のようです。どうすれば良いのかわからなくなりました。 何かご存じの方いらっしゃいませんか? よろしくお願いします。 まさえ