質問: Visual Studio Community 2013で、C++のプログラムを作成するうえで、libxml2というライブラリを使いたいんですが、依存ライブラリの取り込み方がよくわかりません。 ライブラリまるごとアーカイブ化されているわけでもないのでクラスパスに追加して実行すればいいというわけでもなさそうだし、実行はターミナルからコンパイルして実行しているので、g++でのコンパイル時の、依存ライブラリの取り込み方法と、VC++Expressでのビルドが通る状態にする方法(IDE上で依存関係を追加する方法)を教えてください。 初歩的な質問で申し訳ございませんが、よろしくお願いします。 > > miteiさん > > > XML読み込みのやり方をググっていろいろ調べていたのですが、 ブログなど皆さんが公開されている実装を見て、どんな関数があるのか調べ、それぞれ移植しながら実装を行っていたのですが、どうもI/O系の関数が丸ごとなくなっており、何か漏れている感じがします。 ライブラリディレクトリの多くはlibとのことでしたが、 DLしたlibxml2にはlibディレクトリがなかったため、DL直下をライブラリディレクトリとしました。これが何か悪さをしているのでしょうか? ダウンロードしたライブラリ本体はこちらです。 includeディレクトリはあったので、Include Directoryはこちらで間違いないかと思いますが、 libraryディレクトリはこれであっているのでしょうか?
回答: NuGet パッケージがあれば良いですが...すべてのライブラリが提供されているわけではないので通常の手順も紹介しておきます。 通常、C++ でライブラリを使うにはライブラリ本体(.lib, .a)と、ヘッダファイル群が必要になります。 ヘッダファイルが入っているディレクトリまでのパスを、一般的にインクルードパスと呼びます。このディレクトリには慣習的に include という名前が付けられることが多いです。 また、ライブラリが入っているディレクトリの名前は慣習的に lib という名前が付けられることが多いです。 どちらも Unix 系の慣習なので Windows 専用のライブラリの場合はこれに当てはまらないこともあります。 g++ の場合、 `-I[インクルードパス]` `-L[ライブラリの検索パス]` `-l[ライブラリ名]` などのオプションを使ってライブラリを使うための設定をします。ライブラリ名は libxml2.a の場合、`-lxml2` のように頭の lib と拡張子 .a を省略して記述します。 Visual Studio の場合、 ソリューションエクスプローラーからプロジェクト名を右クリックしてプロパティを選択。 C/C++→全般→追加のインクルードディレクトリ を編集してインクルードパスを追加。 リンカー→全般→追加のライブラリディレクトリ を編集してライブラリの検索パスを追加。 リンカー→入力→追加の依存ファイル を編集してライブラリを追加。こちらは g++ の場合とは異なり、拡張子を含むファイル名をそのまま入力します。 クロスプラットフォームの開発を行う場合は、プラットフォーム毎にこれらの設定を行うのは面倒なので cmake などのビルドツールを使うのが一般的です。