我最近增加了一个静态库(Mobclix的)到需要我的基本SDK设置为3.0我的iPhone项目。此库自称是与2.2兼容,到目前为止,看起来是真的。我设置项目的部署目标至2.2。没有问题出现。

现在,我也是用的libxml2在这同一个项目。显然,在OS 3.0 libxml2.2.dylib比OS 2.X(分别版本10和图9)较新的。然而,我的代码,使用libxml2的,已经用的libxml2版本兼容包含OS 2.x的因为我需要基本SDK设定为3.0,则“兼容性版本” /最低版本要求/依赖性自动设置为libxml2的较新版本。当我尝试运行在OS 2中的应用程序,我得到这个运行时错误(显然):

  Dyld Error Message:
  Library not loaded: /usr/lib/libxml2.2.dylib
  Referenced from: /Users/Martijn/Library/Application Support/iPhone Simulator/User/Applications/4D5456DE-F297-4DF4-ACA6-DA8BBBBBA914/Luisterpaal.app/Luisterpaal
  Reason: Incompatible library version: Luisterpaal requires version 10.0.0 or later, but libxml2.2.dylib provides version 9.0.0

是否有可能在某处覆盖版本要求? 或者其他的想法来解决这个问题?

有帮助吗?

解决方案

兼容版本是根据嵌入在当前SDK的生成过程中的dylib的版本设置。我还没有找到一种方法来改变或重写此。

然而,在根据“链接与库二进制”在Xcode目标分支有连接一个dylib“弱”的选项。这在加载dylib(运行)的时候跳过版本检查。这是你的责任,然后只对现有功能的调用。使不存在的函数的调用将应用程序崩溃。

其他提示

显然有一个与SDK 3.0的变化,打破与libxml的兼容性。苹果已经发布了它的位置:

http://developer.apple.com/iphone/library /qa/qa2009/qa1659.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top