链接静态库,共享另一个静态库

2024-02-05

我目前有一个用于非常大的代码库的 Xcode 项目,我将其称为X计划,我将其分为一堆子项目(项目A、B、C ).

到目前为止,每个项目都可以自行编译,效果很好。它们都生成静态库。项目B and 项目C依赖于生成的静态库项目A为了建造。

我有另一个 xcode 项目,Z计划,这需要由生成的静态库项目B和C。问题就在这里。什么时候Z计划进入链接器阶段,事情发生了——在库中发现了重复的符号项目B和C对于他们最初链接的代码项目A!

我对静态库的世界还很陌生,我不确定如何继续前进Z计划,或者如何修改其他项目,以便它们链接到相同的项目项目A库。我有一种感觉,这是不可能的。我在这里有什么选择?

Edit:

我应该澄清一下项目B and 项目C需要构建单独的静态库,因为某些客户端只需要其中之一。

另外,我在 OSX 和 iOS 平台上都遇到了这种困境。

我意识到我可以通过将项目构建为动态库来解决 OSX 上的这个问题。然而,我不想这样做,它仍然让我在 iOS 上遇到同样的问题。


静态库不应包含其他静态库(或一般的第三方代码)。静态库只是一堆粘合在一起的 .o 文件。因此,如果您拥有相同信息的多个副本,它就会崩溃。

每个静态库中应该只包含自己的代码。最终应用程序负责将所有所需的库链接在一起(包括库所需的库)。这样,链接的每个事物就只有一个副本。

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

链接静态库,共享另一个静态库 的相关文章

  • Xcode 6 代码编辑器异常行为

    截至最近 我在使用 Xcode 6 代码编辑器时遇到了一些麻烦 最终导致编辑窗口中的焦点快速变化 在编辑文本时跳转到同一文件中完全不同的位置 一切就是这样开始的 最近 编辑器拒绝上下滚动 挂起 停止显示行号或任何其他文本 我该怎么做才能让它
  • 函数“sum”的隐式声明在 C99 中无效

    我一直在寻找解决方案 但没有找到任何有帮助的东西 我收到以下错误 Implicit declaration of function sum is invalid in C99 Implicit declaration of function
  • 文档 Main.storyboard 需要 Xcode 8.0 或更高版本

    我下载了 Xcode beta 并打开了现有的项目 看看它如何与 Xcode 8 beta 一起使用 我从 Xcode 8 打开了 Storyboard 文件 现在 当我从 Xcode 7 3 打开项目时 我无法打开故事板文件 它给出了以下
  • Xcode 警告引用开发第三方库的用户帐户

    我在我的项目中使用第三方库 BugSense 我已将他们的框架添加到我的项目中 对其进行初始化等 以便一切正常 然而 每次构建项目时 我都会收到大量 40 多个 以下警告 警告 i386 Users genesis Library Deve
  • 从 Xcode 6 安装失败:“存在内部 API 错误”

    我尝试在 ipad ios 7 1 2 上运行一个在我的手机 ios 8 4 1 上运行良好的应用程序 Xcode 提示 存在内部 API 错误 仅此而已 我不确定如何解释日志 怎么了 我该如何解决 ipad日志 Aug 29 17 39
  • UITextField 中光标闪烁,但键盘不出现

    我得到了一个带有文本字段的简单详细视图 在详细的viewController中我写了这段代码 void viewDidAppear BOOL animated self textField becomeFirstResponder NSLo
  • 在 xcode 中,有没有办法验证所有 NSLocalizedStrings 的密钥?

    除了运行其中包含 NSLocalizedString 的每个代码路径之外 是否有一种方法可以验证所有 NSLocalizedString 是否都具有实际存在于所有捆绑包的所有 Localized strings 文件中的密钥 例如 一个键中
  • xCode 7.1 中警报的 UITesting

    我正在 xCode 7 1 中编写 UITests 并且在测试警报时遇到问题 在我的情况下允许通知 创建测试时 xCode 会写入以下代码 app alerts U201cAppName U201d Would Like to Send Y
  • C 中的 N 依赖注入 - 比链接器定义的数组更好的方法?

    Given a 库模块 在下文中称为Runner 它作为可重复使用的组件 无需重新编译 即静态链接库 中应用程序分区架构的 而不是主分区 请注意 它仅包含main 出于演示目的 Given a set 顺序无关 调用的其他模块 对象Call
  • 从 Xcode 更改按钮文本?

    我有一个 IBAction 连接到 Interface Builder 中的一个按钮 是否可以在运行时从我的代码中更改按钮 在 IB 中 上的文本 如果您的代码中有一个连接到某个操作的按钮 则无需实例变量即可更改标题 例如 如果按钮设置为以
  • CMake Xcode生成器创建了一个无法构建的项目

    我有一个使用 CMake 构建系统的 C 项目 我使用 MacBook Pro 进行开发 因此当我使用终端时 一切都非常顺利 我可以构建我的项目 然而 今天我发现我可以在使用 CMake 生成器创建相应的项目后使用 Xcode gt cma
  • 由于 Crittercism 的 .sh 文件而无法上传应用程序

    我们自过去 2 年以来一直在使用 Crittercism SDK 并且能够成功上传应用程序 自过去 2 天以来 由于 dsym upload sh 文件 我们无法使用 Crittercism 上传应用程序 任何人都遇到同样的问题 Critt
  • UITableView 无法一直滚动到底部[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我只是好奇 我做了一些UITable
  • 使用 LLVM/Clang 忽略特定文件中的所有警告

    我的 iOS 项目中的一些文件有一些警告 我想忽略这些警告 我不想禁用整个项目中的警告 知道如何做到这一点 只是禁用一些特定文件 那么 有没有办法完全忽略特定文件中的所有警告呢 我在 Xcode 4 2 上使用 LLVM 3 0 和 Cla
  • 如何读取 Xcode 6.1 Instruments .trace 文件?

    我一直在尝试阅读 trace文件 我使用生成的custom仪器模板 仪器 自动机 分配 Leaks using 仪器 https developer apple com library mac documentation Developer
  • Lemon 解析器作为 Xcode 构建规则

    当在 Xcode 中使用柠檬解析器集成为 使用脚本的 Yacc 源文件 由柠檬生成的警告不会显示在 Xcode 警告部分中 柠檬警告输出与 Xcode 期望的格式不兼容 Lemon 输出的格式如下 filename y NR message
  • cmake 生成 Xcode 项目 - 发布构建有效,但存档因链接器错误而失败

    使用 Xcode 6 3 1 CMake 3 2 2 我有一个与图书馆链接的项目 该库作为代码包含在 xcode project 中 经过编译 然后与主可执行文件链接 项目是用cmake生成的 CMakeLists txt 的一些摘录 ad
  • SwiftUI - 预览时未知的预览提供程序“ContentView_Previews_”。发生在一个全新的项目中

    我有这个简单的观点 import SwiftUI struct ContentView View var body some View Text Hello struct ContentView Previews PreviewProvid
  • 使用 Turbo C 编译并链接到 .com 文件

    我正在尝试使用 Turbo C 编译器和链接器编译一个简单的程序并将其链接到 DOS com 文件 我尝试了我能想到的最简单的 C 程序 void main Turbo C 链接器中是否有链接到 com 文件的命令行参数 我从链接器收到的错
  • 如何将 UIImageView 裁剪为自定义形状

    用户是否可以在该位周围画一条虚线 圆圈 UIImageView他们希望裁剪到 然后为UIImageView调整大小到这些点 这有点像 Photoshop 中的套索 选取框效果 更新 从 iOS 8 x 开始 UIImageView 提供了m

随机推荐