为什么C++Boost发行版有“.dll”和“.lib”文件
Why does C++ Boost distribution have `.dll`and `.lib` files?
豪迪人。我目前正在创建一个"共享"库(也称为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)并不支持这一点。
相关文章:
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 解析引用 |exe/dll vs lib
- CMake 生成的 MSVC 项目找不到符号,即使为其相关 dll 正确生成了 lib 文件也是如此
- 从 .lib 文件创建一个.dll文件
- 可执行文件C++包括.obj,.lib和.dll吗?
- 无法在 DLL 中链接 SDL2-static.lib
- 链接器找不到导入的 DLL 的 LIB 文件
- C++:重命名dll和lib并链接
- C++ CLR dll 需要 .lib 文件,但非 CLR 不需要
- 如何找出依赖于LIB文件的DLL列表?
- 链接 .lib 并在 Windows 中使用 .dll 在 C++ 在 Eclipse 中
- 将标头和 lib 转换为 dll 以将其与 c# 一起使用
- 为什么我的程序寻找共享资源.dll而不是Commons.lib
- 从.dll中调用.lib in C
- GHCi 无法在 Windows 上加载.dll lib(C++ lib)
- 如果在 DLL/Lib 中定义了对象,是否可以在客户端中实例化对象?
- "/MD /MT"和"dll lib"之间的概念歧义
- 在dll/lib上创建链接
- 如何检查 dll/lib 中的函数是否在 windows 中"C"?