dyld:构建到iphone 4时未加载库

时间:2012-12-26 14:18:52

标签: iphone load dylib

我正在使用第三方库,比如说:libABC.dylib

我想在开源应用程序中使用dylib,并希望使用ios 6安装到我的iphone 4中,而不是越狱。 在做一个

$ otool -L libABC.dylib
libABC.dylib:
    libABC.dylib (compatibility version 1.0.0, current version 1.0.0)
    libXYZ.dylib (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version
111.1.5)

现在我想用我的应用程序发送dylib,安装到我的iphone 4中。 为此,我已将dylib路径更改为

$ install_name_tool -id    @executable_path/../Frameworks/libABC.dylib   libABC.dylib

另外,我在Xcode的项目下将libABC.dylib添加到了Frameworks。

这会将内部dylib路径更改为

$ otool -L libABC.dylib
libABC.dylib:
    @executable_path/../Frameworks/libABC.dylib (compatibility version
1.0.0, current version 1.0.0)
    libXYZ.dylib (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version
111.1.5)

问题是: libABC在应用启动时加载, 我无法改变这条路径,相对于我的mach-o二进制文件的路径 (在我的应用包内) 所以我的应用无法加载。

Dyld Error Message:
  dyld: Library not loaded: /usr/local/lib/libABC.dylib
  Referenced from:
  ....
  Reason: image not found

请建议我指点一下。 第三方库只创建dylib,没有静态库

我还尝试设置XCode选项以从“@executable_path”获取dylib但是 它没有用。 我不通过代码加载我的dylib?

请建议。我在这里很无能为力。 提前谢谢:)

2 个答案:

答案 0 :(得分:2)

不幸的是,不,你运气不好,开始寻找替代方案。您无法将自定义/第三方dylib添加到iOS项目,iOS项目仅支持添加内置动态库。此外,添加dylib的任何尝试和成功都可能导致您的应用程序被Apple拒绝。

为什么呢?请查看this post进行详细讨论。特别是对标记答案的第2次评论。

答案 1 :(得分:0)

就像您在@Adil Soomro的参考中所读到的那样,由于安全原因,不支持第三方框架。这就是为什么在尝试构建应用程序时必须删除日志中出现的所有框架的原因。通常,如果不包含这些框架,它应该有效。如果调试器在构建时打开,则应按play直到安装该应用程序。

但请继续查看您使用的是哪种框架,以便在审核该应用时不会被拒绝。

此外,如果您在ios 5.1或更低版本上启动应用程序,并且这些操作系统版本不支持某些框架,则可能会出现相关的错误方法。