インストール: boostで遊ぶ 其の1post

最近、といっても数日前からboostを触り始めた。

主に、Let's boostを参考にしています。

まず、

  1. ダウンロードページから boost_1_39_0.7z と boost-jam-3.1.17-1-ntx86.zip をダウンロード&解凍。
  2. bjam.exe は boost と同じフォルダに入れました。
  3. Let's boostのページのページに乗っ取ってインストールフォルダを決めパスをINCLUDEとLIBに設定。
  4. 「Visual Studio 2008 コマンド プロンプト」を起動しインストールフォルダ移動。
bjam --toolset=msvc link=static,shared release debug stage

と入力してライブラリをビルド。

とここまで来て、letsboost::asioのサンプルを入力してコンパイルだーと「Visual Studio 2008 コマンド プロンプト」から

cl /EHsc asio_sample.cpp

と入力すると...

LINK : fatal error LNK1104: ファイル 'libboost_system-vc90-mt-s-1_39.lib' を開くことができません

_| ̄|○

ライブラリの設定を見直しやり直してもだめ...

ライブラリフォルダを見ると確かに無い...???

色々検索してみると今回のビルド方法の場合はどうもbjamのオプションがたりないようなので、

bjam --toolset=msvc runtime-link=static link=static release debug stage

runtime-link=static を追加すると libboost_system-vc90-mt-s-1_39.lib が生成されリンクできた。(*1)

exeが出来た、さー実行...??あれ?

何も結果が出てこない...

コンパイルオプション変えてもだめ

でそういえばサンプルが入っていたなーと思い出し、boost\libs\asio\example\http\client の sync_client.cpp と async_client.cpp をコピーしビルド。

中身見ながら結構面倒なことやってるなーと思いつつ実行!

Exception: 指定されたクラスが見つかりません。

おや?

クラスってなんだーと思い最終的にIDEでステップ実行。

tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);

の行で例外が発生しているみたい。

たどっていくとgetaddrinfo()から10109が返ってくる。10109ってなんだろーって検索すると WSATYPE_NOT_FOUND らしい。

検索で見つかったgetaddrinfoをみながら、うーん WSATYPE_NOT_FOUND かーと考えてみると、サービス名に"http"って指定していたなーと思い、"80"にして実行してみるとうまく動いた。

asio_sample.cpp の方も "http" から "80" に変えるとこちらも動いた...

で結局、getaddrinfo()に与える引数でなぜか自分の環境では、"http"がだめみたいってことだった。

なんか設定があるのだろうか???

でやっとスタートラインに立てたので今回は終了

*1 : IDEの場合のデフォルトは”マルチスレッド デバッグ DLL”で、libboost_system-vc90-mt-gd-1_39.libが必要とされるので、Let's boostの方法でOKです。


   /   変更履歴  /   Permalink  /  このエントリーをはてなブックマークに追加 
 カテゴリ: ブログ  /   タグ: C++, Boost, Asio, Boostで遊ぶ