避免快速自动链接框架

2024-02-15

我有一个示例项目 https://github.com/Usipov/SwiftAutoFrameworksLinkage由一个主要目标(LinkerTests)和一个依赖的动态框架(Dynamic).

如果运行该项目,您将看到以下 dyld 二进制加载:

dyld: loaded: {DerivedDataPath}/Build/Products/Debug-iphonesimulator/Dynamic.framework/Dynamic

这个 dyld 二进制加载发生的原因是import Dynamic in AppDelegate.swift尽管存在以下情况:

  1. Link Binary With Libraries构建阶段为空
  2. CLANG_MODULES_AUTOLINK设置为 false

我需要实现的是避免这种自动隐式链接。 这可能吗?提前致谢!


相关问题:我们不再需要将框架链接到 XCode 项目了吗? https://stackoverflow.com/questions/24902787/dont-we-need-to-link-framework-to-xcode-project-anymore


显然这个功能被称为自动链接。 Swift 编译器隐式发出额外的链接器标志,链接源代码所依赖的所有模块(import Dynamic).

没有办法完全禁用它。但是有一个私有编译器标志允许您禁用单个框架的自动链接:swiftc -disable-autolink-framework <framework>.

一些参考:https://gist.github.com/zrzka/c89705ff634ea01aebc1 https://gist.github.com/zrzka/c89705ff634ea01aebc1 https://github.com/niw/automatic_linking_tool/blob/master/README.md https://github.com/niw/automatic_linking_tool/blob/master/README.md

我很确定您可以附加-v to swiftc它会将所有底层调用打印为命令。希望您也能够看到链接器调用。

你应该将私有标志包裹在两个里面-Xfrontend允许使用它的标志:

OTHER_SWIFT_FLAGS = "-Xfrontend -disable-autolink-framework -Xfrontend Dynamic"

要使其生效,您仍然必须设置自动链接框架Apple Clang - 语言 - 模块下没有。

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

避免快速自动链接框架 的相关文章

随机推荐

  • 如何在带有 MacPorts 的 MacOS Lion 上设置/使用 GDB 7

    我在 MacOS Lion 上使用 GDB 7 7 3 时遇到了麻烦 我所做的是 sudo port install gdb 之后GDB被安装到 opt local bin ggdb 但是当我尝试执行 GDB 时 我总是在开始时收到以下信息
  • 如何在 Flex 应用程序中运行外部 SWF?

    编辑 由于答案 我更改了发布的代码 我已经添加了 Security allowDomain 行 该行给我一个错误 那么 如何才能做到这一点呢 我想在 Flex 应用程序中运行 Action Script 3 0 应用程序 为此 我执行了以下
  • 使用 JSON.Net 编写属性名称

    我正在使用 JSON net 在 C 中编写一些 json 我可以像这样生成 JSON id 234 name abc 我想做的是得到这个 DATA id 234 name abc 这是我正在使用的 json net 代码 StringBu
  • 将 C# 类(类库)转换为 SQL DDL(表)

    我必须将一组C 类 类库 转换为SQL表以供SQL Server使用 这样数据就可以存储在数据库中并通过数据库进行操作 问题是这些类的数量很大 超过 1000 个类 并且手动设置这样的数据库模式 表 索引 存储过程等 需要很长时间 更不用说
  • 如何从 UUID 类型 1 获取日期/时间

    我已经包含了以下 UUID 库 compile group com fasterxml uuid name java uuid generator version 3 1 5 在我的构建中 我有一些这样的代码 NoArgGenerator
  • 将设备添加到团队配置文件

    我需要将设备添加到我的团队配置文件中 但是我实际上没有该设备 因此我无法将其连接到我的计算机 因此 Xcode 无法将 UDID 添加到我的设备和团队配置文件中 有没有办法将其手动添加到团队配置文件中 我不知道如何编辑它 此外 当我在配置门
  • 显示用户时区中 ISO 格式的 git log 时间戳?

    With date local git log显示我 用户 时区的日期 git log date local 3 pretty tformat cd h abbrev commit Thu Dec 18 15 22 11 2014 dc20
  • 找不到模块:无法解析“firebase”

    之后 npm i firebase 我从 firebase 本身而不是从文件导入 firebase 从 firebase 导入 firebase gt 在 firebase js 文件中 终端错误 gt gt src firebase js
  • 使用 HTML5 文件阅读器并将其发送到 Leaflet Omnivore

    我正在使用 Leaflet JavaScript 并遵循本教程 https www html5rocks com en tutorials file dndfiles https www html5rocks com en tutorial
  • 来自 socket.io 的新 cookie 值不起作用?

    我尝试对多个浏览器窗口 页面使用socket io id 用于 SNS auth process 使用凡奥特 http everyauth com 该项目基于express http expressjs com 这是我的项目设计 维护 so
  • 如何比较两个DateTimeOffSet?

    我有一个 DateTimeOffSet 类型的变量 我想过滤 2010 年 1 月 1 日之后创建的所有项目 所以我写了以下查询 var date new DateTimeOffset 2010 01 01 0 0 0 new TimeSp
  • 如何在 SQL Server 中编写(MySQL)“LIMIT”?

    如何将带有 LIMIT 的 MySQL 查询转换为 SQL Server 查询 SELECT FROM tableEating WHERE person identity LIMIT 1 LIMIT 在 T SQL 中不起作用 使用 TOP
  • VS 2013 多设备混合应用程序无法部署到设备,未找到设备

    我使用新的 VS 2013 Phonegap cordova 模板来创建混合应用程序 It all works fine using emulators and the ripple media emulators but when i c
  • 如何使 javascript 与 Ajax UpdatePanel 一起工作

    我正在尝试在我的表单上添加验证 我在表单字段中使用 AJAX 控件 当我删除更新面板和 AJAX 控件时 我的验证开始工作 但是当将两者放在一起时 我的验证不起作用 我怎样才能让他们一起工作
  • 将字节数组打印到热敏打印机 Java

    我正在使用 java 应用程序对 FedEx 进行 Web 服务调用 并尝试将标签打印到本地 USB 连接的热敏打印机 我将从 FedEx 获取字节数组作为响应 并希望将其打印到连接热敏打印机的客户端计算机 DocAttributeSet
  • 将对象从 JSP 页面传递回 Servlet

    简而言之 我想知道如何通过object从 JSP 页面返回到 Servlet 具体来说 我有一个表单元素 其操作标记引用了 servlet 在提交表单时 我想嵌入一个object in HttpServletRequest要求object以
  • 加载 ASP.NET 网页时缺少 Underscore.js 的 Javascript“.map”文件 [重复]

    这个问题在这里已经有答案了 我有一个网页 它是在 Azure 上运行的 ASP NET 网站的一部分 目前已经运行良好一段时间了 出乎意料的是 我突然在浏览器尝试下载 Underscore js 的 map 时遇到问题 我做了一些阅读 显然
  • 翻译 date("d F Y (H:i) 函数 php

    我是巴西人 有一个 wordpress 插件使用 date d F Y H i date Output 2013 年 1 月 16 日 00 54 但葡萄牙语应该是 16 Janeiro 2013 00 54 我该如何更改它 PS 我认为日
  • 如何通过 Qt 样式表自定义 Qt 应用程序的标题栏?

    我可以在 Qt 样式表中自定义 Qt 应用程序的控件 但是 我找不到自定义标题栏的方法 我找到了一些解决方案 但这需要修改应用程序本身的代码 无论如何 您是否可以仅使用 Qt 样式表来自定义它 标题栏 http en wikipedia o
  • 避免快速自动链接框架

    我有一个示例项目 https github com Usipov SwiftAutoFrameworksLinkage由一个主要目标 LinkerTests 和一个依赖的动态框架 Dynamic 如果运行该项目 您将看到以下 dyld 二进