如何在iOS APP中手动包含动态库

2024-04-09

我有一个 iOS 应用程序(不是用 xcode 制作的),我需要在其中包含一个动态库。我的电脑上有这个库:

\webrtc
    \WebRTC.framework
        \Headers
            \*.h
        \Modules
            \module.modulemap
        \WebRTC
        \Info.plist

我将这些文件部署在我的应用程序中,如下所示:

ALLiveVideoChatClient.app
    \Frameworks
        \WebRTC.framework
            \Headers
                \*.h
            \Modules
                \module.modulemap
            \WebRTC
            \Info.plist

当我做

otool -L ALLiveVideoChatClient.app/ALLiveVideoChatClient

它返回我:

@rpath/WebRTC.framework/WebRTC (compatibility version 0.0.0, current version 0.0.0)

当我尝试运行我的应用程序时,我收到错误:

异常类型:EXC_CRASH (SIGABRT) 异常代码: 0x0000000000000000、0x0000000000000000 异常说明: EXC_CORPSE_NOTIFY 终止描述:DYLD,库未加载: @rpath/WebRTC.framework/WebRTC |参考自: /var/containers/Bundle/Application/A2C3A7DA-D35E-4649-AEA0-9AB518E48971/ALLiveVideoChatClient.app/ALLiveVideoChatClient |原因:找不到图像线程触发:0

所以我检查了 @rpath 的值

otool -l ALLiveVideoChatClient.app/ALLiveVideoChatClient

它返回我

cmd LC_RPATH
cmdsize 32
path $ORIGIN (offset 12)

我不确定是什么意思$ORIGIN但缝它的指向ALLiveVideoChatClient.app所以我更新@rpath以指向$ORIGIN/Frameworks adding -rpath $ORIGIN/Frameworks到链接器(http://www.manpagez.com/man/1/ld/ http://www.manpagez.com/man/1/ld/)但我仍然收到错误找不到图像

我做错了什么?将动态库手动添加(因此无需 xcode)到 iOS 应用程序的步骤是什么?


WebRTC.framework 是一个嵌入式框架,您需要将其嵌入到您的应用程序中。如果没有,您将收到上述错误。

要嵌入,请转到构建设置。您将找到有关“嵌入框架”的部分。单击 + 图标。它将显示您的应用程序中包含的框架列表,选择 WebRTC 框架。更多详情请点击这里Apple 技术说明 - 在应用程序中嵌入框架 https://developer.apple.com/library/archive/technotes/tn2435/_index.html

顺便说一句,我发现 Google 决定从 WebRTC 中删除静态库目标是荒谬的。我们修改了 build.gn(s) 以生成静态库并使用它。如果你需要,我可以分享给你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在iOS APP中手动包含动态库 的相关文章

随机推荐

  • 在cmake中设置boost的最低版本

    我想定义系统上可用的最低增强版本 我尝试了以下方法 不幸的是 这不起作用 因为它尝试在系统上仅提供 boost 1 40 0 的情况下进行编译 SET Boost USE STATIC LIBS OFF SET Boost USE MULT
  • WPF/控制台混合应用程序

    我编写了一个可以在命令行上运行或使用 WPF UI 运行的应用程序 STAThread static void Main string args Does magic parse args and sets IsCommandLine to
  • C++ 多重定义错误

    我的 Headers h 文件包含基本的 C 标头 include
  • 在 Sequelize 迁移中创建关联

    节点js 续集4 41 尝试通过另一个表制作两个多对多关系的模型 跑步与续集 cli 例如 sequelize model generate name Camera attributes name string sn string 这里是模
  • 复杂圆图

    我花了很多时间尝试在 SVG D3 js 中复制所附的图表 我最接近的是使用附加的代码 我已经探索过使用树函数 但只能创建一组圆圈 所附代码的问题是 通过手动输入每个圆圈必须位于的像素坐标 很难使其看起来平滑且智能 作为信息 数据集只会为这
  • 在哪里记录 C 或 C++ 中的函数? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个包含多个文件的 C 程序 所以我有 例如 stuff c它实现了一些功能 并且stuff h与函数原型 我应该如何在注释中记录功能 我应
  • * 或 & 的位置重要吗? [复制]

    这个问题在这里已经有答案了 可能的重复 在C中 为什么星号在变量名之前 而不是在类型之后 https stackoverflow com questions 398395 in c why is the asterisk before th
  • 如何创建不重复的随机数?

    我正在尝试为老年之家创建一款宾果游戏 我能够使用用于扫描数组的随机数生成器来制作一个 但问题是需要很长时间 2 分钟 来搜索数组并确保没有重复的双精度数 我做了一些研究 发现 c 中称为伪随机的东西在创建时不会重复数字 但代码看起来非常复杂
  • 枚举 Node.js net.Server 连接

    是否可以循环遍历与某个连接建立的连接相对应的所有套接字对象 网络服务器 http nodejs org api net html net class net serverNode js 中的实例 最终 我需要关闭所有连接 似乎执行此操作的唯
  • 如何使大循环的联合范围更快

    我有一个子程序 在循环中进行大约 5000 次迭代后 它变得非常慢 否则很快 Windows 8 1 专业版 64 位 Excel 2013 15 0 4701 1001 MSO 15 0 4701 1000 64 位 Sub UnionS
  • 如何为DBGrid特殊单元格着色?

    我有一列只有 是 和 否 值 我想要如果列值为 是 则只有单元格背景颜色为红色 否则 否 则背景颜色为黄色 但这段代码为整行着色 if ADOTable1 FieldByName Clubs AsString yes then begin
  • C函数分析(地址似乎有偏移)

    我正在尝试使用 finstrument functions 选项来分析函数调用 基本上 我所做的是将以下内容写入任何已编译的源代码中 static int stepper 0 void cyg profile func enter void
  • 根据列中的值对完整行进行着色

    我需要根据列中单元格的值对整个 Excel 行进行着色 我有三列 Item Price and Status 并且想要为该行着色 如果Status值为 已交付 至绿色 拒绝 对红色 WIP 至橙色 您可以为此使用 非 VBA 条件格式 如果
  • Boost::MPL Vector 和 For_Each:如何将 avector 打印为元组?

    想象一下 我们有一个 mpl vector 我们想将其打印 例如 cout 为这样的字符串 int string char 如何使用 boost mpl 来做这样的事情 创建一个函子并调用 boost for each struct pri
  • 如何使用一个可观察量的状态来跳过另一个可观察量的值?

    通过一个简短的例子可以最好地解释这一点 假设这是我想要过滤的可观察源 Observable interval 1 TimeUnit SECONDS 我使用复选框来处理过滤器状态 当未选中该框时 我想跳过所有值 我使用 RxAndroid 来
  • 如何让 Gitlab CI Pipeline 始终运行某些作业,而仅在合并请求时运行其他作业?

    TL DR 我的目标是拥有一个 Gitlab CE 12 4 2 管道 该管道仅在合并请求上执行某些作业 而始终执行其他作业 在合并请求上和所有正常推送上 必须如何 gitlab ci yml想要这样做吗 我的用例 我有一个运行大量作业的大
  • 定义 Pydantic(嵌套)模型

    如果我使用 GET 给定一个 id 我会得到一个 JSON 如下所示 data id 81 ks k1 25 k2 5 items id 1 name John surname Smith id 2 name Jane
  • node.js +express.js +dust.js 问题

    简单的问题 为什么express js 不能与dust js 一起运行 我知道它没有得到官方支持 但dust js 甚至与我的node js 版本存在问题 由于 require path 问题 节点甚至无法启动 server testapp
  • 无法将 javascript 库加载到 Meteor 应用程序中

    我在使用 Fabric js 库与 Meteor 应用程序时遇到问题 不幸的是 我无法完全完成将其添加到我的应用程序的阶段 更不用说调用它了 最简单的休闲方式如下 gt mrt create test gt cd test gt mkdir
  • 如何在iOS APP中手动包含动态库

    我有一个 iOS 应用程序 不是用 xcode 制作的 我需要在其中包含一个动态库 我的电脑上有这个库 webrtc WebRTC framework Headers h Modules module modulemap WebRTC In