我已经从 http://boost.teeks99.com/ 下载了 boost 1.58.0(预编译,x86,VC 12.0)并安装到C:\local\boost_1_58_0(我也试过自己用msvc-12.0编译源码,结果一样。
问题:例如,我看到同一个库的 libboost*.lib 太多
ls -l libboost_math_*
返回:
libboost_math_c99f-vc120-mt-1_58.lib
libboost_math_c99f-vc120-mt-gd-1_58.lib
libboost_math_c99f-vc120-mt-s-1_58.lib
libboost_math_c99f-vc120-mt-sgd-1_58.lib
libboost_math_c99f-vc120-s-1_58.lib
libboost_math_c99f-vc120-sgd-1_58.lib
libboost_math_c99l-vc120-mt-1_58.lib
libboost_math_c99l-vc120-mt-gd-1_58.lib
libboost_math_c99l-vc120-mt-s-1_58.lib
libboost_math_c99l-vc120-mt-sgd-1_58.lib
libboost_math_c99l-vc120-s-1_58.lib
libboost_math_c99l-vc120-sgd-1_58.lib
libboost_math_c99-vc120-mt-1_58.lib
libboost_math_c99-vc120-mt-gd-1_58.lib
libboost_math_c99-vc120-mt-s-1_58.lib
libboost_math_c99-vc120-mt-sgd-1_58.lib
libboost_math_c99-vc120-s-1_58.lib
libboost_math_c99-vc120-sgd-1_58.lib
libboost_math_tr1f-vc120-mt-1_58.lib
libboost_math_tr1f-vc120-mt-gd-1_58.lib
libboost_math_tr1f-vc120-mt-s-1_58.lib
libboost_math_tr1f-vc120-mt-sgd-1_58.lib
libboost_math_tr1f-vc120-s-1_58.lib
libboost_math_tr1f-vc120-sgd-1_58.lib
libboost_math_tr1l-vc120-mt-1_58.lib
libboost_math_tr1l-vc120-mt-gd-1_58.lib
libboost_math_tr1l-vc120-mt-s-1_58.lib
libboost_math_tr1l-vc120-mt-sgd-1_58.lib
libboost_math_tr1l-vc120-s-1_58.lib
libboost_math_tr1l-vc120-sgd-1_58.lib
libboost_math_tr1-vc120-mt-1_58.lib
libboost_math_tr1-vc120-mt-gd-1_58.lib
libboost_math_tr1-vc120-mt-s-1_58.lib
libboost_math_tr1-vc120-mt-sgd-1_58.lib
libboost_math_tr1-vc120-s-1_58.lib
libboost_math_tr1-vc120-sgd-1_58.lib
我的问题:
- 为什么一个库有那么多lib文件? (36 个文件 libboost_math、4 libboost_atomic、6 libboost_iostreams 等等)
- 为什么没有单独的 libboost_math.lib、libboost_atomic... 文件?
- 如果我想使用 boost_math,我应该选择哪个库?
最佳答案
Boost.Math 包含很多部分,它们不共享同一个库文件。
库的文件名描述了它构建的目的。
例如,
- vc120:它是为 Microsoft Visual C++ 12.0(又名 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 header 指示链接器)将为您链接正确的版本。
关于c++ - 太多 libboost_*.lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31124947/