【发布时间】:2012-04-30 08:01:45
【问题描述】:
我已经构建了一个依赖于多个 Boost 库的库 (VC10)。 我想在多个应用程序中使用这个库,其中每个应用程序都依赖于不同的 Boost 版本,我希望能够在不为每个 Boost 版本构建库的情况下做到这一点。
我使用 BOOST_ALL_DYN_LINK 和 BOOST_ALL_NO_LIB 构建了我的库,但这两个库似乎都依赖于特定的 Boost 版本。
有人能解释一下我如何构建一个依赖于 Boost 的库,并且可以在不重新编译或重新链接库的情况下更新 Boost 版本吗?
【问题讨论】:
-
Check this thread 也许有帮助?
-
使用 BOOST_ALL_DYN_LINK(即在运行时链接 DLL)不会有帮助,因为目标系统上可能有不同的 BOOST 版本。您应该考虑提供一个静态库,其中包含正确的 boost 库,这些库也静态链接到您的 lib 项目。
-
为什么静态链接的 boost 版本会更好?例如,我使用带有版本 A 的 boost 中的库 Thread 并将其静态链接到我的库。然后应用程序使用版本 B 的 boost Thread 以及使用版本 A 的库。在我看来这可能会导致问题。
-
如果您将 boost 线程库静态链接到您自己的 lib,则您的 lib 独立于用户端任何其他本地可用的 boost 线程版本 - 它已经拥有所需的所有代码。
-
是否有特定原因必须使用多个版本的 boost?这可能不是您正在寻找的答案,但是调整您的代码以使用单个版本可能会为您省去很多麻烦
标签: c++ boost dll dynamic-linking