为什么C++ Boost发行版有`.dll`和`.lib`文件?

sas*_*uke 6 c++ dll boost

豪迪人.我目前正在创建一个"共享"库(也就是Windows上的DLL),而后者依赖于"Boost C++"库来获取日期时间功能.我注意到我的Boost安装(通过Boostpro完成)lib在boost安装目录中有一些DLL和LIB文件.好的,我认为有必要,所以我将它们添加到我的IDE中的库依赖项中.

现在我要做的是编写使用boost日期时间库的代码,创建一个共享库并从独立的可执行文件中使用它.它工作,即使我刚刚将我创建的共享库复制到可执行文件夹而不是boost_date_time-vc100-mt-1_47.dll文件.奇怪.现在我要做的是从我的项目中删除Boost的DLL /库依赖项并构建共享库.它仍然有效.

我有点困惑.如果Boost库只是标题,为什么我的Boostpro安装有*.lib和*.dll文件用于datetime和其他boost部件?是否有任何情况我想使用它们,因为那些升级库无论如何都被编译到我的共享库中?

希望我很清楚,如果需要更多说明,请告诉我.还有FWIW,我正在使用Eclipse CDT + MingW.

Sve*_*ven 4

Boost 的大部分部分都是头文件,而其他一些部分(至少文件系统和 iostreams IIRC)需要链接库。所以这完全取决于您使用 Boost 的哪些部分。Boost 库文档页面上记录了哪些部分需要链接。

有些库使用自动链接。这意味着头文件包含特定于编译器的代码,用于嵌入指令以将正确的库链接到目标文件中。这是一个有用的功能,必须得到编译器的支持。不过 gcc 工具链(包括 MingW)不支持这一点。