1

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

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

4

2 回答 2

0

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

有关这方面的更多信息,请参阅此问题以及它链接的问题:

ObjC:如何编译包含依赖第三方库的可选类的静态库

于 2014-02-06T23:13:04.630 回答
0

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

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

我没有亲自测试过这个功能。

于 2014-02-10T21:21:51.843 回答