第一次使用boost - 为什么我不必在构建时明确链接到它?

时间:2012-07-10 21:18:08

标签: c++ boost linker g++

在回答我最近的一个问题时,有人建议我在boost中使用一个函数来解决我的问题。这是我第一次使用boost,所以我添加了以下.hpp文件

#include <boost/algorithm/string.hpp>

和函数调用

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

到我的源文件,然后运行make来正常使用g ++构建我的应用程序。

此时我意识到我没有在makefile中的链接步骤中添加任何新库,并完全期望链接步骤失败。令我惊讶的是,它并没有失败 - 不仅如此,而且代码完全按照应该没有任何投诉的方式运行。

令我惊讶的是至少可以说 - g ++是如何知道要链接的,为什么会自动这样做?或者我错过了一些与boost库运行方式相关的基础知识?我知道boost使用了大量的模板,这是我不太熟悉的C ++的一个方面,所以我想知道这是否与我所看到的有关。

1 个答案:

答案 0 :(得分:7)

某些boost库是仅限标头,这意味着没有要链接的二进制文件。其他库如boost::thread将要求您向链接器添加新的库。