工作中偶尔会遇到使用多个C++库,但是这些库采用不同ABI编译的情况,有的采用ABI=0,有的采用ABI=1,不同ABI的so库是无法直接链接使用的。
通常有两种解决方法:
1:获得所有库的代码,从源码开始将所有库编译成相同的ABI设置。但有时候这个方法由于不开源不可能实现,或者重新编译源码非常麻烦。
2:可以考虑通过适配器方式,通过C接口(extern C)的方式对库进行封装开放C API,使得不同ABI都可以进行调用。
工作中偶尔会遇到使用多个C++库,但是这些库采用不同ABI编译的情况,有的采用ABI=0,有的采用ABI=1,不同ABI的so库是无法直接链接使用的。
通常有两种解决方法:
1:获得所有库的代码,从源码开始将所有库编译成相同的ABI设置。但有时候这个方法由于不开源不可能实现,或者重新编译源码非常麻烦。
2:可以考虑通过适配器方式,通过C接口(extern C)的方式对库进行封装开放C API,使得不同ABI都可以进行调用。