nekotokani
@nekotokani

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

c++からmecabを使うにはどうすればいいのか

解決したいこと

外部ライブラリ、具体的にはmecabをc++から呼び出して使うにはどうすればよいでしょうか?

自分はそもそも、外部ライブラリをどのようにすればC++のソースコードから呼び出して使えるようになるのか(コンパイル時になにか書く必要はあるのか、使えるようにするためにまずコンソールでコマンド打ったりする必要があるのかなど)よくわからず、おそらくかなり初歩的な段階で躓いてしまっています

一応プログラムでやりたいことを言っておくと、c++からmecabを呼び出し、文章を分解し、分解したものをつかってプログラム上で色々する、ということをしていきたいです。

自分で試したこと

現状としては、下の記事を参考にvscordのc_cpp_propertiesのincludePathにmecabのsrcまでのパスを書いたり、tasksのargsの-Iとか-Lとかの後にmecab全体が入ったファイルのパスを指定したりしていますが、うまくいってないです...
https://note.com/hirotaro_net/n/n1235cd0e4107#02c73a6f-8568-4766-89e1-985b00dfc189

0

3Answer

Comments

  1. @nekotokani

    Questioner

    一番下のほうから、 mecab.h、libmecab.dll、libmecab.libを自分のコードのディレクトリに張れば動作するというのはわかったのですが、libmecab.dll、libmecab.libがどこにあるのかわかりません…

  2. @nekotokani

    Questioner

    どこにあるかわからないと言ってたやつは見つかって、自分のコードと同じ階層に置いたのですが
    gcc -DDLL_IMPORT -I. example.c -o example.exe libmecab.dll
    のexampleあたりを自分のものに合わせて実行しても
    i386 architecture of input file `libmecab.dll' is incompatible with i386:x86-64 output

    というのと

    (.text+0x88): undefined reference to `__imp__ZN5MeCab12createTaggerEPKc'
    collect2.exe: error: ld returned 1 exit status
    というようなエラーが出てきてうまくコンパイルしてくれません…

C++のライブラリであればg++を使いましょう

g++ file.o -Xlinker file.dll -L ディレクトリ -l:file.lib  -o file.exe
0Like

Your answer might help someone💌