問題は見つかりませんでしたと表示されながらも以下のようにエラーが出ます。
1>------ ビルド開始: プロジェクト: ConsoleApplication1, 構成: Release x64 ------ 1>ConsoleApplication1.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) class MeCab::Tagger * __cdecl MeCab::createTagger(char const *)" (__imp_?createTagger@MeCab@@YAPEAVTagger@1@PEBD@Z)" は未解決です。 1>C:\Users\Desktop\ConsoleApplication1\x64\Release\ConsoleApplication1.exe : fatal error LNK1120: 1 件の未解決の外部参照 1>プロジェクト "ConsoleApplication1.vcxproj" のビルドが終了しました -- 失敗。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
コンソールアプリで新規作成をして、
追加の依存ファイルにlibmecab.libを入力。
追加のインクルードディレクトリにC:\Program Files (x86)\MeCab\sdkを入力。
追加のライブラリディレクトリにC:\Program Files (x86)\MeCab\sdkを入力。
環境はWindows10、visual studio 2019、mecab。
以下のソースをビルドしました。
#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 << result << std::endl; delete tagger; }
新しくこちらのコードをビルドしてコマンドプロンプトで実行ファイルは得られましたが、
Exception:としか表示されませんでした。
#include <mecab.h> #include <stdio.h> #define CHECK(eval) if (! eval) { \ fprintf (stderr, "Exception:%s\n", mecab_strerror (mecab)); \ mecab_destroy(mecab); \ return -1; } int main(int argc, char** argv) { char input[] = "太郎は次郎が持っている本を花子に渡した。"; mecab_t* mecab; const mecab_node_t* node; const char* result; int i; size_t len; // Create tagger object mecab = mecab_new(argc, argv); CHECK(mecab); // Gets tagged result in string. result = mecab_sparse_tostr(mecab, input); CHECK(result) printf("INPUT: %s\n", input); printf("RESULT:\n%s", result); // Gets N best results result = mecab_nbest_sparse_tostr(mecab, 3, input); CHECK(result); fprintf(stdout, "NBEST:\n%s", result); CHECK(mecab_nbest_init(mecab, input)); for (i = 0; i < 3; ++i) { printf("%d:\n%s", i, mecab_nbest_next_tostr(mecab)); } // Gets node object node = mecab_sparse_tonode(mecab, input); CHECK(node); for (; node; node = node->next) { if (node->stat == MECAB_NOR_NODE || node->stat == MECAB_UNK_NODE) { fwrite(node->surface, sizeof(char), node->length, stdout); printf("\t%s\n", node->feature); } } // Dictionary info const mecab_dictionary_info_t* d = mecab_dictionary_info(mecab); for (; d; d = d->next) { printf("filename: %s\n", d->filename); printf("charset: %s\n", d->charset); printf("size: %d\n", d->size); printf("type: %d\n", d->type); printf("lsize: %d\n", d->lsize); printf("rsize: %d\n", d->rsize); printf("version: %d\n", d->version); } mecab_destroy(mecab); return 0; }
ジュニーは戦場に行ったのプログラムで画像のフォルダの内容でコマンドプロンプトを開きcdコマンドで移動して実行しましたが、何も表示されないまま終わってしまいます。
何がいけないのでしょうか?
先ほどデバッグをしたところ画像のようなエラー?のようなものが見受けられました。
調べてみます。
こちらはデバッグ後の情報です。
スレッド 0x2878 はコード 0 (0x0) で終了しました。 例外がスローされました:読み取りアクセス違反。 **tagger** が nullptr でした。 プログラム '[29984] ConsoleApplication1.exe' はコード 0 (0x0) で終了しました。