避免使用静态库和cocoapods的重复符号

时间:2014-02-06 22:58:33

标签: ios static-libraries cocoapods libpng libharu

我通过cocoapods和libharu使用OpenCV,两者都使用libpng,我无法在libharu静态库中包含opencv.framework以使用libpng。

我是否需要重命名每个符号,或者有办法使用相同的libpng?

2 个答案:

答案 0 :(得分:0)

第三方静态库永远不应链接其他第三方静态库本身。最终的应用程序链接步骤应最终将所有库链接在一起。如果cocoapod规范要求一个静态库包含另一个,那么它是不正确的,需要修复。

有关此问题的更多信息,请参阅此问题及其链接的问题:

ObjC: How to compile static library that includes optional classes that depend on a third party library

答案 1 :(得分:0)

从libpng-1.6.0开始,您可以配置libpng(使用时使用 “configure”脚本)通过以下方式为所有导出的符号添加前缀 配置选项“--with-libpng-prefix = FOO_”,其中FOO_可以是任意一个 以字母开头且仅包含大写的字符串 小写字母,数字和下划线(即C语言) 标识符)。这在pnglibconf.h中创建了一组宏,所以这是 对应用程序透明;他们的函数调用被转换 宏使用修改后的名称。

基本上,它会在构建时为您重命名每个导出的符号 你自己的libpng。

我没有亲自测试过此功能。