libboost _ *。lib太多了

时间:2015-06-29 20:27:43

标签: c++ boost

我已经从http://boost.teeks99.com/下载了boost 1.58.0(预编译,x86,VC 12.0)并安装到C:\ local \ boost_1_58_0(我也尝试使用msvc-12.0编译源代码并获取同样的结果。

问题:我看到同一个库的libboost * .lib太多,例如

(SELECT TOP 1 pt.Delivery + t.Tax + t.Amount FROM ProductTransaction pt INNER JOIN Transaction t ON pt.Id=t.Id WHERE pt.Id=Id) 返回:

ls -l libboost_math_*

我的问题:

  1. 为什么一个库有这么多的lib文件? (36个文件 libboost_math,4 libboost_atomic,6 libboost_iostreams等)
  2. 为什么没有单一的libboost_math.lib,libboost_atomic,... 文件?
  3. 如果我想使用boost_math,我应该选择哪个库?

1 个答案:

答案 0 :(得分:1)

Boost.Math包含许多部分,并且它们不共享相同的库文件。

库的文件名描述了它的构建目的。

例如,

  • vc120:它为microsoft visual C ++ 12.0构建(a.k.a. 2013)
  • mt:将链接多线程版本的C运行时。 (LIBCMT.LIB)
  • mt-s:将与多线程版本的共享C运行时链接。 (MSVCRT.LIB)
  • mt-gd:将与C运行时的多线程调试版本链接。 (libcmtd.lib)
  • mt-sgd:将与共享C运行时的多线程调试版本链接。 (MSVCRTD.LIB)
  • s:将链接共享C运行时的单线程版本。 (现在VC似乎不包含一个?我不确定。)
  • sgd:将链接共享C运行时的单线程调试版本。 (现在VC似乎不包含一个?我不确定。)

如果您使用Boost与Microsoft Visual C ++,您将受益于自动链接功能。设置附加库目录和链接器(确切地说,boost头指向链接器)将为您链接正确的版本。