我正在为iPhone编写一个静态库,我想知道我在做什么是推荐的还是我应该采取不同的方法。
我写的静态库依赖于libxml2。 libxml2有一个动态库(dylib)和一个静态库(a)。我尝试了两种方法。
方法一 - 当我尝试通过将“-lxml2”添加到“其他链接器标志”来链接静态库时,构建失败并显示以下消息:
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/libtool: file: -lxml2 is not an object file (not allowed in a library)
方法二 - 我可以成功链接静态库中的动态库,但我不确定iPhone上是否允许(或正确的方法)。即使我正在构建静态库,Apple是否允许链接动态库的静态库?我还在学习静态库,但根据我的理解,来自dylib的代码将与我的代码组合在一起构成一个库,因此与dylib链接应该不是问题。
总结:
答案 0 :(得分:8)
SDK中提供了libxml2.dylib。 正确的方式是在Xcode中双击目标节点/应用程序,然后在“常规”下单击“链接库”下的 + ...您应该找到该列表中的libxml2.dylib 。
0:42在此Screencast中,您可以看到CoreGraphics是如何添加到项目中的。
答案 1 :(得分:0)
您无法将库静态链接到其他静态库。这就是依赖于其他静态库的框架和库要求使用者手动将它们添加到Link Binary With Libraries构建阶段或其他Linker Flags构建设置的原因。
答案 2 :(得分:-8)
Apple不允许您链接除SDK提供的框架和/或库之外的框架和/或库。
马