ここからダウンロードして,インストールしましょう.
CaBoCha\bin フォルダの libcabocha.lib からライブラリファイルを次のように作成する必要はなかった.
> C: \Rtools\minGW\bin\pexports.exe libcabocha.dll > libcabocha.def > C: \Rtools\minGW\bin\dlltool --input-def libcabocha.def --output-lib libcabocha.lib
ということは,libmecab.dll でも,これは実行しなかったのかな.R.dll だけ実行したのだろうか.
#define CHECK(eval) if (! eval) { \ fprintf (stderr, "Exception:%s\n", cabocha_strerror(cabocha)); \ cabocha_destroy(cabocha); \ return (SEXP) -1; }
を忘れてはいけない.
こうするしかないのだろうか?
#define DELIMITER L"/ ,、。!?.!?" /* 区切り文字 */ ... setlocale(LC_ALL, ""); wchar_t *endptr = NULL; ... mbstowcs(wbuf, p, 100); sentences = wcstok(wbuf, DELIMITER, &endptr); while(sentences != NULL){ wcstombs(str,sentences, 100); tree = const_cast<cabocha_tree_t*> (cabocha_sparse_totree(cabocha, str) ); CHECK(tree); size = cabocha_tree_token_size(tree); cid = 0; for (i = 0; i < size; ++i) { const cabocha_token_t *token = cabocha_tree_token(tree, i); if (token->chunk != NULL){ cid++; linkN = token->chunk->link; } strcpy(buf1, token->feature); node = strtok(buf1, ","); j = 1; while(node != NULL){ ...
ということらしいので,Windows版では CPP ソースファイルだけUTF-8にした.従って,コード内に日本語文字をハードコーディングできない.R から引数で渡すしかない.