ios - 如何正确签署要通过 iOS 中的 dlopen 加载的 C++ dylib
问题描述
我们正在将我们的语言工具集成到移动平台中。
因此,目前有一些语言特定的库可根据用户请求加载 - 英语、法语、西班牙语或希腊语。
这些库太大而无法静态链接。
目前,我们可以通过 linux 中的 dlopen 和 dlsym 调用来加载这些库。
我已经看到我们可以从 iOS v8 开始使用这些调用。
正如苹果开发者支持所说“......没有全面禁止使用 dlopen 和朋友。”
在编译我们的库(使用 CMake 和相关的 iOS 工具链)后,它们已使用与应用程序相同的证书和标识符进行签名,使用
codesign --deep --force --sign "78037F819B5AA1522177B06DA8E7C5343DDBC0CF" --identifier=fr.teamname.libtext_fr ./libtext_fr.dylib
但是,当应用程序(在 iOS v14 的 iPad 上运行)尝试加载文件时,会引发错误,我们得到以下原因:
code signature invalid (errno=1) sliceOffset=0x00000000, codeBlobOffset=0x0205D0F0, codeBlobSize=0x000453E0
请注意,我们目前使用的是免费的 Apple ID,尚未加入开发者计划。
我做了很多搜索,但还没有找到缺少的东西。
现在采取的正确方向是什么?
解决方案
经过大量研究,我在苹果开发论坛上打开了一个请求。
这个问题的答案可以在这里找到: https ://developer.apple.com/forums/thread/670761
推荐阅读
- powershell - 将双引号添加到以逗号分隔的所有列,但不添加已包含在双引号中的逗号
- asp.net-core - 在大型项目中的 Azure DevOps 中创建管道
- apache-spark - 从dataFrame保存表中的现有项目
- python - 根据匹配更改列中的值
- android - 致命异常:java.lang.IllegalStateException no event down from INITIALIZED
- javascript - ReactJS 和 Firebase 配额通过小数据快速达到
- sql - MSSQL 日期格式
- ros - libroscpp.so ECLIPSE 中没有这样的文件或目录
- c++ - 分离视频帧 C++ 的 Y 和 UV
- curl - 从 EC2 实例调用 AWS Gateway Rest API