我正在使用Visual c + + 6.0,我想使用boost::random。我找不到任何示例,说明我将如何使用此而仅使用此库。我可以将它包含在我的来源中吗?
答案 0 :(得分:24)
Boost得到了一个名为bcp的非常好的工具,可以满足您的需求。看看吧。
来自文档:
bcp boost/regex.hpp /foo
Copies boost/regex.hpp and all dependencies including the regex source code
(in libs/regex/src) and build files (in libs/regex/build) to /foo. Does not
copy the regex documentation, test, or example code.
答案 1 :(得分:7)
唯一要注意的是在include路径中添加boost的路径。尽管这些库只是标题,但许多boost标题包含boost库中的其他标题,如果没有正确设置包含路径,它们将无法找到它们。
我目前的项目包含路径:
/I "C:\Program Files\boost\boost_1_39"
我的代码然后包括这样的提升标题:
#include <boost/random.hpp>
boost / random.hpp有很多行,比如 #include“boost / random / linear_congruential.hpp”,这就是你需要包含路径的原因。
答案 2 :(得分:4)
大多数boost作为“仅标题”库分发 - 这意味着您不需要“构建”使用该库的任何类型的东西。随机是其中之一,因此可以只包含正确的头文件,你就会笑掉。我想说最好在某个地方获得整个提升源,并参考一下,因为不同的部分往往会有一些相互依赖。
答案 3 :(得分:1)
是的,大多数boost库只是标题,因此您不需要编译任何源文件。
答案 4 :(得分:1)
是的,要使用boost::random
,您只需在源文件中包含标题即可。
由于Boost广泛使用模板,因此许多库纯粹在头文件(和模板实现文件,la txx
)中实现。
大多数库也是独立的,因此您可以只使用一个而不依赖于另一个库。 (记录例外情况。)
如果查看list of Boost libraries,您会看到其中许多标记为“仅限标题”,因此没有其他库可以链接。
答案 5 :(得分:0)
我将如何使用此仅使用此库
我不确定你的顾虑是什么。即使您包含其他标头和/或链接其他库,您的最终可执行文件也只包含解析代码中符号所需的库部分。它不会引入未使用的对象模块。标题中的内联代码和模板不会被实例化,除非它们被引用。
由于Boost主要是一个模板库,并且在大多数链接器中解决缺少模板感知的问题,因此代码在头文件中内联,实例化的模板被编译到实例化的每个对象模块中。因此,您最终可能会在多个模块中出现重复的代码,如果您担心可执行的大小,您应该知道。