7

我正在为 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 应该不是问题。

总结一下:

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

3 回答 3

8

SDK 中提供了 libxml2.dylib。正确的方法是在 Xcode 中双击目标节点/应用程序,然后在 General 下单击“Linked Libraries”下的+ ...您应该在该列表中找到libxml2.dylib 。

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

于 2009-03-08T09:44:16.807 回答
0

您不能将库静态链接到其他静态库。这就是为什么依赖于其他静态库的框架和库要求消费者手动将它们添加到他们的 Link Binary With Libraries 构建阶段或 Other Linker Flags 构建设置。

于 2014-06-11T13:05:01.460 回答
-8

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

马可

于 2009-03-08T09:28:13.473 回答