2

私は Boost ライブラリを初めて使っていますが、Regex という名前のかわいい女の子を選びました。

マシンにライブラリ (自動的にビルドされますか?) をインストールしましたが、上記のエラーが発生します (見つかりません-lboost_regex)。MinGW で Code::Blocks を使用し、C++0X コンパイラ フラグを使用しています。

私は持っている

  • 「検索ディレクトリ」をインストールディレクトリに向けました
  • -lboost_regexリンカーにフラグを追加しました

しかし運がない。誰かがこれを機能させるのを手伝ってくれますか?


アップデート

動作するようになりました。この問題の初心者向けに、以下の回答にさらにメモを追加しました。

(また、私が始めたときよりも広範な問題であることが判明したため、質問のタイトルを変更しました。)

4

2 に答える 2

6

私の最初のビルド経験から、初心者に役立ついくつかのリンクとヒントを次に示します。zip ファイルからライブラリを直接ビルドしました。私は MinGW で構築し、IDE には CodeBlocks を使用しました。

  1. Boost zip をダウンロードし、どこかで解凍します (ここではその場所と呼びます$boostdir) 。
    • 解凍するとかなり大きく、> 300MB
  2. MinGW bin を PATH var に追加します
    • Boost のビルド時には、MinGW 実行可能ファイルへのアクセスが必要になります。
  3. ビルドb2.exeしてbjam.exe
    • Windowsのドキュメントでは、 MSVC コンパイラが利用可能であることを簡単に前提としています。
    • もしそうなら、あなたはどうやらbootstrap.batドキュメントが言うように使うことができます。
    • そうでない場合 (私のように)、手順 4 と 5 で exe ファイルを自分でビルドする必要があります。
  4. CMD で、次の場所に移動します。$boostdir/tools/build/v2/engine
  5. 実行build.bat mingw(ビルドb2.exeしてbjam.exe)
  6. これで、システムの仕様に合わせてカスタマイズb2できました。bjamに戻り$boostdir、ライブラリの構築を開始する準備をします。
    • Boost はbin.v2現在のディレクトリに新しいディレクトリを作成します。
    • すべてのライブラリが入りbin.v2ます。
    • これは何らかの理由で「中間」ディレクトリです
    • このステップでは何もする必要はありません。追加情報だけです :)
  7. 走るb2 toolset=gcc --build-type=complete
    • これには1 ~ 2 時間程度の長い時間がかかります。
    • 機能しているかどうかがわかります。何かがおかしいと思うなら、それは機能していません。
    • ビルドはさまざまなフラグを使用できます

これですべてが構築されました。CodeBlocks をセットアップする時間です。

  1. コンパイラにヘッダー ファイルを指定する
    • プロジェクトを右クリック -> ビルド オプション -> 検索ディレクトリ タブ -> コンパイラ タブ ->$boostdirアドレスを追加
  2. Boost は、現在のシステム仕様に従って、必要なライブラリの DLL を構築しました。stage\lib\のディレクトリを見てください$boostdir
    • この DLL は後でリンカーで使用されるため、まだエクスプローラ ウィンドウを閉じないでください。
    • 私のは入っていたC:\Program Files\Boost_1_52\stage\lib\libboost_regex-mgw44-1_52.dll
    • ドキュメントにはこれを行うスマートな方法があったと思いますが、まだ試していません
    • ビルドが完了したので、ステップ #6 の「中間」ディレクトリを削除できます。
  3. リンカーがその DLL のディレクトリを指すようにします
    • プロジェクトを右クリック -> ビルド オプション -> ディレクトリの検索タブ -> リンカー タブ -> そのディレクトリ アドレスを追加 ( blah\blah\blah\stage\lib\)
  4. そのDLLフラグをリンカー設定に追加します
    • 私のは-lboost_regex-mgw44-1_52
  5. 深呼吸して神に祈り、試練に火をつけてください。

役立つか混乱する可能性のあるその他のドキュメント:

Code::Blocks の Web サイトには、検索の終わりに近づくまで見つけられなかったバージョンがあります。かなり役に立ちましたが、いくつか奇妙な点がありました。 この投稿も役に立ちます。

幸運を!

于 2012-11-11T10:02:04.587 に答える
4

which build automaticallyの意味がわかりません。Boost ライブラリのほとんどはヘッダーのみですが、正規表現などのいくつかは、共有/静的ライブラリにコンパイルする必要があります。bjamコンパイル手順は自動ではありません。これを行うには、Boost ビルド システム ( ) を呼び出す必要があります。もちろん、さまざまなプラットフォーム用にビルド済みの Boost バイナリを配布するソース (BoostPro など) があります。

それが完了したら、ライブラリが存在するパスをリンカーの検索パスに追加する必要があります。MinGW の場合、このオプションは-L"path/to/library". Boost には、必要なライブラリの自動リンクを許可するディレクティブがあり、これは MSVC でうまく機能するようですが、MinGW で機能するようになったことはありません。そのため、明示的にリンクするライブラリもリストする必要があります。Boost ライブラリには、デフォルトでファイル名にターゲットとバージョンの情報が含まれているため、典型的なリンカー コマンド ライン オプションは-lboost_regex-mgw47-mt-1_51、MinGW gcc 4.7 と Boost 1.51 のようになります。

于 2012-11-10T07:59:19.767 に答える