1

最近の質問の1つに答えて、問題を解決するためにブーストの関数を使用することが提案されました。Boostを使用するのはこれが初めてなので、次の.hppファイルを追加しました

#include <boost/algorithm/string.hpp>

および関数呼び出し

boost::replace_all(marketPrices, "\\:", "-COLON-");

ソースファイルに移動し、makeを実行して、通常どおりg++を使用してアプリケーションをビルドしました。

この時点で、makefileのリンクステップに新しいライブラリを追加していないことに気付き、リンクステップが失敗することを完全に予想していました。驚いたことに、それは失敗しませんでした-それだけでなく、コードは文句なしに実行されるべきであったとおりに実行されました。

これは控えめに言っても私を驚かせます-g++はどのようにしてリンク先を知り、なぜ自動的にリンクするのですか?それとも、Boostライブラリの動作方法に基本的な何かが欠けていますか?Boostは多くのテンプレートを使用することを知っています。これは、私があまりよく知らないC ++の側面であるため、おそらくこれが私が見ているものと関係があるのではないかと思います。

4

1 に答える 1

7

一部のBoostライブラリはヘッダーのみであり、リンクするバイナリがないことを意味します。のような他のライブラリでboost::threadは、リンカーに新しいライブラリを追加する必要があります。

于 2012-07-10T21:20:15.407 に答える