gpt4 book ai didi

c++ - 太多 libboost_*.lib

转载 作者:行者123 更新时间:2023-11-30 05:41:29 27 4
gpt4 key购买 nike

我已经从 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

我的问题:

  1. 为什么一个库有那么多lib文件? (36 个文件libboost_math、4 libboost_atomic、6 libboost_iostreams 等等)
  2. 为什么没有单独的 libboost_math.lib、libboost_atomic...文件?
  3. 如果我想使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com