首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何为动态库添加Swift包依赖项?

如何为动态库添加Swift包依赖项?
EN

Stack Overflow用户
提问于 2021-07-01 23:56:03
回答 1查看 302关注 0票数 0

我正在尝试迁移一个iOS应用程序来使用Swift包管理器,将框架转换为包。对于我的大多数代码来说,这并不是很简单,我有越来越多的模块和包可以很好地工作。

问题出在依赖于第三方库的模块上。"libA“库只能作为带有C头文件的二进制libA.a使用,并且我已经创建了一个xcframework,我使用binaryTarget通过Package.swift文件将其导入到模块"MyLibA”中。首先将该库转换为xcframework,如下所示:

代码语言:javascript
运行
AI代码解释
复制
    lipo -extract arm64 -output libA_arm_ios/libA.a libA/bin/libA.a
    lipo -extract x86_64 -output libA_x86_ios/libA.a libA/bin/libA.a

    xcodebuild -create-xcframework -libA.a libA_arm_ios/libA.a -library \
        libA_x86_ios/libA.a -headers libA/headers -output libA.xcframework

然后包含在swift包中,如下所示:

代码语言:javascript
运行
AI代码解释
复制
    import PackageDescription
    
    let package = Package(
        name: "MyLibA",
        products: [
            .library(
                name: "MyLibA",
                targets: ["MyLibA"]),
        ],
        dependencies: [
        ],
        targets: [
            .target(
                name: "MyLibA",
                dependencies: ["libA"]),
            .binaryTarget(name: "libA", path: "build/libA.xcframework"),
            .testTarget(
                name: "MyLibATests",
                dependencies: ["MyLibA"]),
        ]
    )

然而,libA反过来依赖于zlib,后者在苹果电脑上以libz.tbd的形式提供。因此,当我添加MyLibA依赖项并尝试运行MyLibATests时,我得到链接器错误

代码语言:javascript
运行
AI代码解释
复制
Undefined symbols for architecture arm64:
  "_zlibVersion", referenced from:
      _libA_method in libA.a(libA_la-version.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

所以问题是,我如何处理这个包中的zlib依赖关系?我是否需要找到/创建一个合适的.a,然后像对libA所做的那样将其包装在xcframework中?有没有更简单的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2021-07-06 15:28:44

哇。太简单了。我已经走上了一条错误的道路,因为我读到了关于必须包装系统库等的内容,因为我一直在学习Swift Package Manager。

zlib是一个系统库,所以我需要做的就是添加

代码语言:javascript
运行
AI代码解释
复制
   .linkedLibrary("z")

在目标的linkerSettings:下:

代码语言:javascript
运行
AI代码解释
复制
    targets: [
        .target(
            name: "MyLibA",
            dependencies: ["libA"]),
            linkerSettings: [
                .linkedLibrary("z")
            ]
        )
     ]

:facepalm:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68218103

复制
相关文章
关闭浏览器后,Cryptojacking脚本却仍在运行
《关闭浏览器后,Cryptojacking脚本却仍在运行》文章摘要:研究人员发现一种被称为“弹出式”的隐藏挖矿脚本,即使在用户关闭主浏览器窗口后,仍可在Windows任务栏中运行。不法分子利用Coinhive提供的挖矿脚本,通过隐藏的浏览器窗口和JavaScript代码在用户电脑上挖掘Monero加密货币。该手法难以察觉,且可能严重影响用户计算机性能。用户可尝试使用Windows任务管理器来强制终止与流氓窗口相关联的挖矿进程,或调整Windows任务栏大小并显示该窗口。
企鹅号小编
2018/01/03
1.1K0
关闭浏览器后,Cryptojacking脚本却仍在运行
php关闭浏览器继续执行踩坑记录
最近在项目中需要批量刷数据,但是由于项目的框架太老无法简单的使用命令行,而且项目比较急,所以想到之前的php关闭浏览器继续执行的路子,我记得php客户端断开继续执行需要配置nginx和fpm和php的配置,当时既修改php又修改fpm,但是找不到当时记录的配置信息了,后来想到自己之前测试过一个方法可行,于是翻出来了,代码如下:
高久峰
2023/06/03
5620
selenium 如何在已打开的浏览器上继续运行自动化脚本?
使用selenium 做web自动化的时候,经常会遇到这样一种需求,是否可以在已经打开的浏览器基础上继续运行自动化脚本? 这样前面的验证码登录可以手工点过去,后面页面使用脚本继续执行,这样可以解决很大的一个痛点。
上海-悠悠
2021/08/20
8K0
selenium 如何在已打开的浏览器上继续运行自动化脚本?
新型浏览器挖矿技术可在浏览器窗口关闭的情况下持续挖矿
写在前面的话 在之前的文章中,我们给大家介绍了基于Web的挖矿恶意软件的相关内容。通过观察发现,越来越多的攻击者开始使用臭名昭著的Coinhive服务(允许网站使用目标用户硬件资源挖门罗币)来实施攻击
FB客服
2018/02/26
1.7K0
新型浏览器挖矿技术可在浏览器窗口关闭的情况下持续挖矿
VG浏览器生成EXE的自动运行及自动关闭
首先生成启动函数 方法一:双击窗体标题生成exe启动函数,也就是窗体载入函数
用户1191760
2019/05/22
1.5K0
VG浏览器生成EXE的自动运行及自动关闭
selenium+chrome不关闭浏览器的情况下如何换IP?
Selenium是一种用于自动化浏览器的工具,可以用于模拟用户行为,特别是在访问需要进行登录的网站的时候,直接可以使用Selenium和HTTP代理来模拟真实用户行为,绕过网站反爬虫机制,以及保护我们的隐私。那如何在Selenium中使用代理并访问目标网站,一般Selenium都是使用ChromeDriver来控制浏览器。
小白学大数据
2023/03/16
1.8K1
TensorFlow.js发布:使用JS进行机器学习并在浏览器中运行
TensorFlow.js是为JavaScript开发者准备的开源库,可以使用JavaScript和高级图层API完全在浏览器中定义,训练和运行机器学习模型!如果你是一名机器学习新手,那么TensorFlow.js是开始学习的好方法。
AiTechYun
2018/07/27
2K0
TensorFlow.js发布:使用JS进行机器学习并在浏览器中运行
关闭浏览器的跨域校验
Access to script at '资源路径' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome-untrusted, https, edge
程序员朱永胜
2023/09/01
1.3K0
关闭浏览器的跨域校验
浏览器运行原理
浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件。
泰斗贤若如
2019/06/19
1.4K0
浏览器运行原理
关闭谷歌浏览器强制Https
特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!
收心
2022/01/19
4.5K0
关闭谷歌浏览器强制Https
IE浏览器,被永久关闭!
微软宣布,将在当地时间6月15日(北京时间16日),结束对“Internet Explorer(IE)”的支持。
wencheng
2022/08/25
2.2K0
IE浏览器,被永久关闭!
浏览器的运行机制
渲染过程说白了,首先是基于 HTML 构建一个 DOM 树,这棵 DOM 树与 CSS 解释器解析出的 CSSOM 相结合,就有了布局渲染树。最后浏览器以布局渲染树为蓝本,去计算布局并绘制图像,我们页面的初次渲染就大功告成了。
愤怒的小鸟
2021/01/14
4990
如何关闭常见浏览器的 HSTS 功能
在安装配置 SSL 证书时,可以使用一种能使数据传输更加安全的Web安全协议,即在服务器端上开启HSTS (HTTP Strict Transport Security)。它告诉浏览器只能通过HTTPS访问,而绝对禁止HTTP方式。
IT小马哥
2022/05/05
4K0
让Linux关闭SSH终端后程序继续运行
解决方法:使用nohup命令让程序在关闭窗口(切换SSH连接)的时候程序还能继续在后台运行。
用户8965210
2021/08/31
6.9K0
screen实现关闭ssh之后继续运行代码
使用SSH连接远程服务器,启动服务,退出SSH后,服务也就终止了,使用Screen可以解决这个问题。
怪兽
2022/12/14
5210
独角数卡 关闭防红 关闭浏览器跳转
33小铺 https://www.33xp.cn/ 打开 DujiaoBoot.php 文件 /app/Http/Middleware/DujiaoBoot.php 注释 /*/ 浏览器检测 $userAgent = $request->header('user-agent'); $nowUri = site_url() . $request->path(); $tplPath = 'common/notencent'; if (
残浔
2023/05/11
1.4K0
独角数卡 关闭防红 关闭浏览器跳转
Flutter 运行到浏览器
最近想让Flutter 项目运行到浏览器试一下,按照一些博客说明,做了下面的操作。
星宇大前端
2020/07/06
2.2K0
Flutter 运行到浏览器
谷歌浏览器安装不上
今天打开谷歌浏览器突然出现第一次打开浏览器内容不显示,在次刷新才可以,也不知道是什么原因,然后重新安装浏览器
二货哈
2022/03/28
1.5K0
远程部署CentOS上的Jupyter Notebook并在浏览器访问
生成的config file在/root/.jupyter/jupyter_notebook_config.py
SL_World
2021/09/18
1.3K0
QQ浏览器拼写检查如何关闭?
看了下内核逻辑,默认是开启的,暂时没有办法关闭,我们准备在设置项增加一个选项,可以开启或者关闭,预计下个版本11.6.0发布
Windows技术交流
2023/01/09
1.5K0

相似问题

即使用户关闭了浏览器,PHP脚本还能继续运行吗?

71

在用户关闭浏览器后继续运行操作

11

如果关闭浏览器,PHP代码是否继续运行?

21

即使浏览器关闭,CF模板是否仍继续运行?

11

在关闭浏览器时运行php脚本

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档