混合增强库版本
Mixing boost library versions
我们有一个带有各种动态库的应用程序,这些库都使用Boost 1.48(静态(。由于第三方依赖Boost Filesystem v2,我们无法切换到应用程序的最新Boost版本。
对于新功能,我们为应用程序开发了一个新的动态库,该库也应用于其他一些项目。我们能为这个新的库使用最近的(静态?(Boost库吗?而不干扰应用程序中已经使用的Boost库?
我应该避开什么陷阱?
Boost库通常不支持混合使用不同版本的库。这样做是否会导致问题取决于许多因素,其中包括有问题的库、应用程序设计和目标平台。问题的一个来源可能是符号重新定位,这是Linux和其他类UNIX系统上链接过程的一部分。即使您使用Boost的静态库进行链接,链接的符号仍然可以从二进制文件中导出,并且在加载应用程序时可能会发生冲突。这可能会导致各种未定义的行为,并且通常很难调试。
一般来说,我强烈反对在同一个应用程序(即运行时进程(中混合使用不同版本的Boost。
如果您使用静态boost库来构建动态库,则静态boost库不会与另一个boost静态或动态库产生副作用。
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 无法将结构注册为增强几何体3D点
- 导入库可以跨dll版本工作吗
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 在运行时读取 libstdc++ 版本
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 增强基于 XML class_id的反序列化
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 增强精神解析器规则以检测语句中的特殊结尾
- Vulkan SDK 版本 1.1.85.0 在 Kubuntu 18.10 上链接
- 增强构建显示默认工具集和版本
- 混合增强库版本