4

我了解 Apple 不支持在 iPhone 应用程序中使用动态库。但是我们正在开发一个内部应用程序,并且我们对使用动态库有一个独特的要求。我们的要求是加载一个动态库作为“iPhone”应用程序启动的一部分。我读到 DYLD_INSERT_LIBRARIES 就是为此目的。所以我编辑了 Info.plist 并添加了下面的条目。LSEnvironment DYLD_INSERT_LIBRARIES @executable_path/sample.dylib

但它似乎不起作用。你能告诉我你的想法吗?非常感谢您在这方面的帮助。

谢谢——尼奥

4

4 回答 4

3

我找到了一种LC_LOAD_DYLIB使用optool.

$ optool install -c load -p "@executable_path/<dylib_path>" -t <executable>
$ otool -L <executable>

构建时optool,请确保构建设置OTHER_LDFLAGS包括-ObjC.

optool似乎无法为arm64架构成功添加加载命令,因此您可能希望arm64从二进制文件中删除

$ lipo <input_file> -remove arm64 -output <output_file>

编辑:
有一个支持 arm64的开放拉取请求。

于 2014-08-06T11:54:25.757 回答
0

最近几天我也在处理同样的问题。我也没有按照您尝试的方式成功。所以我尝试使用这个链接从另一个应用程序启动我的应用程序: 动态库注入 ,不幸的是 Apple Block 运行多个任务(即使在 iphone 模拟器上),但你可以尝试也许你会有更多的运气。我知道这不是您期望的答案,但也许它会给您一些思考的方式。如果你有一些进展,请分享。

于 2013-05-27T10:12:15.137 回答
-1

您“可以”在运行时加载二进制文件,并且可以操纵 xcode 设置以使其编译适用于 iOS 的 dylib。看到这个答案:

https://stackoverflow.com/a/10509453/784387

于 2013-05-27T10:18:39.317 回答
-2

很高兴得到纠正,但不支持 dylib 并且无法正常工作。您需要获取库的代码并将它们编译为 arm6/7 架构的静态库。然后您可以轻松地包含这些库。有很多静态库的例子,XCode 也提供了构建它们的目标。

于 2011-10-27T01:41:40.120 回答