6

伙计们。我目前正在创建一个“共享”库(又名 Windows 上的 DLL),该库又将依赖“Boost C++”库来提供日期时间功能。我注意到我的 Boost 安装(通过 Boostpro 完成)lib在 boost 安装目录中有一些 DLL 和 LIB 文件。好的,我认为有必要,所以我将它们添加到我的 IDE 中的库依赖项中。

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

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

希望我足够清楚,如果需要更多说明,请告诉我。同样 FWIW,我正在使用 Eclipse CDT + MingW 来完成这一切。

4

1 回答 1

4

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

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

于 2012-08-18T19:46:16.047 回答