c++ - 基于某些标志在单个应用程序中动态使用不同的 OpenSSL 版本
问题描述
需要用 2 个版本的 OpenSSL 共享库/DLL 编译一个应用程序。版本 1.0.2 和版本 1.1.1。1.1.1 版不支持 FIPS。所以为了支持联邦客户,我们想继续使用 1.0.2 版本。对于非 FIPS 客户,希望使用具有许多安全修复程序的 1.1.1 版。
所以会有很多 API 添加、删除或签名更改。将有许多结构、枚举添加/删除或修改。为了处理 API,我们计划使用 LoadLibrary/dlopen 基于 FIPS 标志动态加载库,并通过使用 GetProcAddress/dlsym 获取的函数指针调用函数。
麻烦在于结构/枚举/定义。要使用它们,我们必须包含头文件。两个版本的头文件将具有相同的名称,一些共同的声明。所以我们不能在一个 CPP 文件中包含 2 个这样的头文件。
我们尝试使用命名空间,但没有太大帮助。任何通过某种设计模式或其他方式在 C++ 中解决此问题的建议都会有所帮助。
提前致谢
解决方案
推荐阅读
- python - 如何修复不满足 biner 约束的 PuLP VRP 模型
- jersey-2.0 - 在 Gradle 中使用带有 Open Liberty 的 Jersey
- swift - 有人可以简单地解释一下 Swift 的应用程序二进制稳定性吗?
- javascript - 如何停止在同一对象上触发“点击”事件
- ios - 两个对象没有相互接触,但是contactTestBetween()返回结果
- geolocation - 没有 wifi 或 gps 的设备跟踪
- java - 实现hashcode和equal的职责
- css - 导航没有一路覆盖
- haskell - 使用给定索引处的元素更新列表
- amazon-cloudformation - AWS-SAM 模板是否支持生命周期配置设置?