首页 > 解决方案 > 如何正确签署要通过 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,尚未加入开发者计划。

我做了很多搜索,但还没有找到缺少的东西。

现在采取的正确方向是什么?

标签: ioscode-signingdylib

解决方案


经过大量研究,我在苹果开发论坛上打开了一个请求。

这个问题的答案可以在这里找到: https ://developer.apple.com/forums/thread/670761


推荐阅读