正确的方法来链接来自iPhone/CocoaTouch库的库

Cag*_*ged 7 iphone static-libraries libxml2 static-linking

我正在为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)
Run Code Online (Sandbox Code Playgroud)

方法二 - 我可以成功链接静态库中的动态库,但我不确定iPhone上是否允许(或正确的方法).即使我正在构建静态库,Apple是否允许链接动态库的静态库?我还在学习静态库,但是根据我的理解,来自dylib的代码将与我的代码结合起来构成一个库,因此与dylib的链接应该不是问题.

总结一下:

  • mylibrary.a - > libxml2.a [不起作用]
  • mylibrary.a - > libxml2.dylib [构建,但这是正确的,可以接受吗?]

epa*_*tel 8

SDK中提供了libxml2.dylib.在正确的方法是在Xcode目标节点/应用程序,然后在常规单击双击+下的"链接库" ......你会发现libxml2.dylib在该列表中.

在此屏视频中0:42 您可以看到CoreGraphics是如何添加到项目中的.


Mar*_*rco -8

Apple 不允许您链接除 SDK 提供的框架和/或库之外的框架和/或库。

马可