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

Why does C++ Boost distribution have `.dll`and `.lib` files?

本文关键字:dll lib 文件 C++Boost 为什么      更新时间:2023-10-16

豪迪人。我目前正在创建一个"共享"库(也称为windows上的DLL),该库反过来将依赖于"Boost C++"库来实现日期时间功能。我注意到我的Boost安装(通过Boostpro完成)在Boost安装的lib目录中有一些DLL和LIB文件。好吧,我认为有必要的,所以我把它们添加到IDE中的库依赖项中。

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

我有点困惑。如果Boost库真的只是头,为什么我的Boostpro安装有用于datetime和其他Boost部分的*.lib和*.dll文件?考虑到这些boost库无论如何都会被编译到我的共享库中,我有什么想使用它们的场景吗?

希望我已经足够清楚了,如果需要更多的澄清,请告诉我。还有FWIW,我使用Eclipse CDT+MingW来完成这一切。

Boost的大多数部分都只是头,而其他一些部分(至少是文件系统和iostreams IIRC)需要链接库。所以这完全取决于你使用Boost的哪些部分。哪些部件需要链接,请参见Boost Library文档页面。

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