混合增强库版本

Mixing boost library versions

本文关键字:版本 增强 混合      更新时间:2023-10-16

我们有一个带有各种动态库的应用程序,这些库都使用Boost 1.48(静态(。由于第三方依赖Boost Filesystem v2,我们无法切换到应用程序的最新Boost版本。

对于新功能,我们为应用程序开发了一个新的动态库,该库也应用于其他一些项目。我们能为这个新的库使用最近的(静态?(Boost库吗?而不干扰应用程序中已经使用的Boost库?

我应该避开什么陷阱?

Boost库通常不支持混合使用不同版本的库。这样做是否会导致问题取决于许多因素,其中包括有问题的库、应用程序设计和目标平台。问题的一个来源可能是符号重新定位,这是Linux和其他类UNIX系统上链接过程的一部分。即使您使用Boost的静态库进行链接,链接的符号仍然可以从二进制文件中导出,并且在加载应用程序时可能会发生冲突。这可能会导致各种未定义的行为,并且通常很难调试。

一般来说,我强烈反对在同一个应用程序(即运行时进程(中混合使用不同版本的Boost。

如果您使用静态boost库来构建动态库,则静态boost库不会与另一个boost静态或动态库产生副作用。