IOS 中OpenSSL 和 GMSSL 符号冲突问题(C、C++ 符号冲突 )

353 阅读1分钟
  • 前提:自身SDK中引入了GMSSL国密静态库(必须要有且OpenSSL不能替代),项目中另外一个SDK中引入了OpenSSL静态库,编译报错,符号冲突。
  • 解决方案:自身SDK隐藏全部符号,只暴露需要暴露的类和API
  • Xcode相关设置:
  1. Xcode - build setting-搜索hidden:把Symbols Hidden by Default设置Yes
WX20240415-110453.png

2.在target的build setting里搜索prelink,将Perform Single-Object Prelink置为

Yes,然后把该工程需要的库都直接拖到Prelink libraries中。

WX20240415-110414.png

3.设置 post process

将Deployment Postprocessing置为Yes。

WX20240415-110333.png

4.设置需要暴露的class

WX20240415-110800.png