我知道苹果不支持在iPhone应用程序中使用动态库。但我们正在开发一个内部应用程序,并且我们对使用动态库有一个独特的要求。我们的需求是加载一个动态库作为"iPhone“应用程序启动的一部分。我读到过DYLD_INSERT_LIBRARIES就是为这个目的而设计的。所以我编辑了Info.plist并添加了下面的条目。LSEnvironment DYLD_INSERT_LIBRARIES @executable_path/sample.dylib
但它似乎没有起作用。你能告诉我你的想法吗?非常感谢您在这方面的帮助。
谢谢--Neo
发布于 2014-08-06 19:54:26
我找到了一种方法,可以使用optool成功地将LC_LOAD_DYLIB load命令添加到MachO二进制文件中。
$ optool install -c load -p "@executable_path/<dylib_path>" -t <executable>
$ otool -L <executable>构建optool时,请确保build setting OTHER_LDFLAGS包含-ObjC。
optool似乎无法成功地为arm64体系结构添加load命令,因此您可能需要从二进制文件中删除arm64
$ lipo <input_file> -remove arm64 -output <output_file>编辑:
有一个支持arm64的开放pull request。
发布于 2013-05-27 18:12:15
在过去的几天里,我也在解决同样的问题。我也没能像你尝试的那样成功。所以我尝试使用这个链接从另一个应用程序启动我的应用程序:Dynamic Library injection,不幸的是Apple Block运行多个任务(甚至在iphone模拟器上),但是你可以尝试一下,也许你会有更多的运气。我知道这不是你想要的答案,但也许它会给你一些思考的方式。如果你有一些进展,请分享。
发布于 2013-05-27 18:18:39
您“可以”在运行时加载二进制文件,并且可以操作xcode设置使其为iOS编译dylibs。请看这个答案:
https://stackoverflow.com/questions/7910694
复制相似问题