我想在开源电子邮件客户端中包含一个pdf 注释演示库(即无法查看源代码..只能使用框架二进制文件)。问题是电子邮件客户端是非 ARC 代码,而 pdf 二进制库是。通常的解决方法是简单地使用和链接器标志来解决这个问题。-ObjC
-fobjc-arc
问题是 pdf 二进制文件的作者还在库周围发布了一些 ARC 包装器代码,这些代码对我来说仍然很重要。所以我所做的是我创建了一个 xcode 项目。将包装器代码插入其中并制作包装器代码使用二进制库。然后我将包装器代码包含为静态库。
然后我开始收到错误:symbol(s) not found for architecture i386
..错误是关于包装库无法找到pdf框架二进制文件中定义的对象..
问题是我在 iphone 上测试了相同的代码,然后我得到了symbol(s) not found for architecture ARM
.. 所以我知道这不是文件架构问题.. 还有有趣的是,如果我自己编译包装库,它工作得很好。
经过大量的头发撕裂和墙壁冲孔后,我发现如果我只是将 pdf 二进制文件包含到父项目中(以及包装器静态库中)..那么事情就像一个魅力..为什么这是必要的?我认为包装静态库应该是独立的(为什么它可以自己编译但在作为父项目的一部分编译时无法在其包含的框架中找到对象)?