1

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

我想在开源应用程序中使用 dylib,并且想安装到我的 iphone 4 中,带有 ios 6,没有越狱。在做一个

$ 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

另外,我将 libABC.dylib 添加到 Xcode 项目下的 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?

请建议。我在这里一无所知。提前谢谢:)

4

2 回答 2

2

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

为什么?请查看此帖子以进行详细讨论。特别是对标记答案的第二条评论。

于 2012-12-26T14:24:13.800 回答
0

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

但是请继续查看您使用的框架类型,以免在审核应用程序时被拒绝。

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

于 2013-09-06T09:56:47.910 回答