9

我正在使用一个封闭的源代码库(由 Activ Financial 提供),其中包括他们的 API 一个 boost 发行版,包括一些 boost 头文件和 boost 库文件。

我还在我现有的代码库中使用 Boost,我需要从我现有的代码中使用 Activ。

几点

  • 我可以封装我对 Activ 的使用,以便整个 Activ 部分相当于我编写的一个类,它不暴露任何 Activ 的标头
  • 这个单个头文件不使用任何提升任何东西
  • 通过这种方式,我可以确保我的代码的 Activ 部分使用 Activ 的 Boost HPP 文件,并且我的代码使用我的 Boost 的 HPP 文件

我担心的是链接。如何确保我的 Activ 相关代码链接到 Activ 的 Boost,而我的其他代码链接到我的 Boost?

我现在正在使用 g++,也将在 VS2008 中这样做。我以前在 VS2008 中工作过,但我不知道一切是如何联系起来的。我想尝试确保它正确完成。

有没有办法在不进一步将 Activ 部分封装在动态库中的情况下做到这一点?

编辑:

一方面,我的最终产品始终是一个可执行文件。对于两个,我静态链接以提升自己。Activ 库包括 Boost 对象库的静态和动态版本,我打算静态链接它。

我从不在使用不同 boost 版本的代码之间传递 Boost 对象。

问题是,如何将一个 cpp 或文件链接到一个.o库文件中的对象,然后确保其他文件链接到另一个库文件中的相同对象?这可能吗?.o

4

1 回答 1

3

该库是动态还是静态链接到 Boost?如果静态链接,库是否公开 DLL 中的符号(declspec 导出)?

如果库是静态链接的并且符号未公开,并且您没有来回传递任何 Boost 数据结构(smart_ptr、线程等),那么您可能可以安全地在 DLL 中使用您自己的 Boost 库版本。

于 2010-12-01T06:37:43.413 回答