11857


Visual Studio Community
2013で、C++のプログラムを作成するうえで、libxml2というライブラリを使いたいんですが、依存ライブラリの取り込み方がよくわかりません。

ライブラリまるごとアーカイブ化されているわけでもないのでクラスパスに追加して実行すればいいというわけでもなさそうだし、実行はターミナルからコンパイルして実行しているので、g++でのコンパイル時の、依存ライブラリの取り込み方法と、VC++Expressでのビルドが通る状態にする方法(IDE上で依存関係を追加する方法)を教えてください。

初歩的な質問で申し訳ございませんが、よろしくお願いします。

> miteiさん

XML読み込みのやり方をググっていろいろ調べていたのですが、  
ブログなど皆さんが公開されている実装を見て、どんな関数があるのか調べ、それぞれ移植しながら実装を行っていたのですが、どうもI/O系の関数が丸ごとなくなっており、何か漏れている感じがします。

ライブラリディレクトリの多くはlibとのことでしたが、  
DLしたlibxml2にはlibディレクトリがなかったため、DL直下をライブラリディレクトリとしました。これが何か悪さをしているのでしょうか？

ダウンロードしたライブラリ本体はこちらです。  
<ftp://xmlsoft.org/libxml2/libxml2-2.9.2.tar.gz>

includeディレクトリはあったので、Include Directoryはこちらで間違いないかと思いますが、  
libraryディレクトリはこれであっているのでしょうか？


CC BY-SA 3.0
2015-06-29T06:30:48.440
11845
2015-06-29T13:27:10.123
2015-06-29T11:22:54.387
8396
8396
question
c++ visual-studio
C++ VisualStudioで外部ライブラリを取り込んでビルドする方法


とりあえずVisualStudio上で入れる方法を...

VisualStudio2013を起動したら、メニューから`[ツール]-[NuGetパッケージマネージャー]-[ソリューションのNuGetパッケージの管理]`を選択。  
NuGetパッケージの管理ダイアログが開くので、右上の『オンラインの検索』ってtextboxに『libxml2』と入力。  
検索結果に『libxml2』が出てくるので『インストール』ボタンを押下。ライブラリを利用したいプロジェクトを選択するダイアログが出るので、プロジェクトにチェックを入れて『OK』押下。  
これで『libxml2』と『libxml2 Redist』が入るみたいです。

後は、ライブラリを使用するとしていしたプロジェクトのファイル上で`#include
"libxml\hogehoge.h"`とかってやってやれば使えると思いますよ。  
※hogehogeの部分は当然、自分が利用したいheader file名ですね。


CC BY-SA 3.0
2015-06-29T07:31:39.120
11848
2015-06-29T07:31:39.120
2383
11845
answer


NuGet パッケージがあれば良いですが…すべてのライブラリが提供されているわけではないので通常の手順も紹介しておきます。  
通常、C++ でライブラリを使うにはライブラリ本体（.lib, .a）と、ヘッダファイル群が必要になります。  
ヘッダファイルが入っているディレクトリまでのパスを、一般的にインクルードパスと呼びます。このディレクトリには慣習的に include
という名前が付けられることが多いです。  
また、ライブラリが入っているディレクトリの名前は慣習的に lib という名前が付けられることが多いです。  
どちらも Unix 系の慣習なので Windows 専用のライブラリの場合はこれに当てはまらないこともあります。

g++ の場合、  
`-I[インクルードパス]`  
`-L[ライブラリの検索パス]`  
`-l[ライブラリ名]`  
などのオプションを使ってライブラリを使うための設定をします。ライブラリ名は libxml2.a の場合、`-lxml2` のように頭の lib と拡張子
.a を省略して記述します。

Visual Studio の場合、  
ソリューションエクスプローラーからプロジェクト名を右クリックしてプロパティを選択。  
C/C++→全般→追加のインクルードディレクトリ を編集してインクルードパスを追加。  
リンカー→全般→追加のライブラリディレクトリ を編集してライブラリの検索パスを追加。  
リンカー→入力→追加の依存ファイル を編集してライブラリを追加。こちらは g++ の場合とは異なり、拡張子を含むファイル名をそのまま入力します。

クロスプラットフォームの開発を行う場合は、プラットフォーム毎にこれらの設定を行うのは面倒なので cmake などのビルドツールを使うのが一般的です。


CC BY-SA 3.0
2015-06-29T08:54:56.347
11854
2015-06-29T08:54:56.347
2748
11845
answer


> libraryディレクトリはこれであっているのでしょうか？

あってません。というか手順が足りていないんですね。  
ライブラリを使用するにはヘッダファイルと .lib や .a といったバイナリ形式のライブラリファイルが必要になります。  
ライブラリディレクトリにはこれらのライブラリファイルが含まれるディレクトリを指定する必要があります。

> ダウンロードしたライブラリ本体はこちらです。  
>  <ftp://xmlsoft.org/libxml2/libxml2-2.9.2.tar.gz>

これに含まれているのはライブラリのソースコードのみであって、ビルド済みのバイナリは含まれていません。  
README に従ってビルドするのが通常の手順ですが、libxml2 の Windows でのビルド手順がちょっと特殊なようですね…。

<http://xmlsoft.org/sources/win32/libxml2-2.7.8.win32.zip>  
バージョンが古いですが公式でビルド済みバイナリが配布されているのでこれを使ってもよいかもしれません。  
残念ながら最新版の libxml2 の Visual Studio 用のバイナリは提供されていないようです。


CC BY-SA 3.0
2015-06-29T13:27:10.123
11857
2015-06-29T13:27:10.123
2748
11845
answer