【问题标题】:Xcode: Linking and compiling with 3rd party frameworkXcode:使用 3rd 方框架链接和编译
【发布时间】:2012-11-08 12:26:53
【问题描述】:

简而言之

为了使用 Amazon AWS SDK 编译和链接我的 C++ iOS 代码,我必须修改 AWS 框架目录的结构。我试图理解我做错了什么。

详细说明

我有一个适用于 iOS 的 Xcode C++ 项目,需要与亚马逊的 AWS 开发工具包集成。我下载了最新版本的 SDK。 SDK 作为框架分发。根据亚马逊的文章Getting Started with the AWS SDK for iOS,我所要做的就是:

按住 Control 键单击框架组,然后单击将文件添加到

从其他 Internet 资源和我的个人知识中,我知道将框架添加到项目的“使用库构建二进制文件”构建阶段也应该有效。

这两种方法都不起作用。编译器找不到头文件,链接器也找不到二进制文件。此外,当框架出现在项目导航器中时,展开节点什么都没有显示,而其他框架通常包含它们的资源和包含文件。

四处嗅探发现框架的目录结构是:

AWSiOSSDK.framework/
   Versions/
      A/
         Headers/
         Resources/ 
         AWSiOSSDK

据我了解,这与 Apple requires 不完全一样。因此,在绝望的尝试中,我删除了 Versions/A 部分;即,将框架的所有内容直接放在AWSiOSSDK.framework目录下。

令人惊讶的是,它解决了所有问题 - 找到了标头,链接了二进制文件,一切正常。现在我想知道为什么。我假设由亚马逊这样受人尊敬的公司分发的框架应该具有正确的形式。那为什么没用呢?为什么我修改后的结构有效?有不同结构的框架吗?如何告诉编译器和链接器接受原始形式?还是亚马逊会分发损坏的捆绑包?

【问题讨论】:

  • 框架通常在根文件夹中有指向Versions/A/HeadersVersions/A/*Binary name*的符号链接。
  • @Olotiar,是的,我刚刚阅读了有关它的 Apple 文档。会不会是亚马逊分发了损坏的捆绑包?
  • 好吧,我从来没有使用过亚马逊的捆绑包,但如果文档说明这是必要的,而且他们的捆绑包不是这样形成的,它可能是。重要的是它现在可以工作了。

标签: c++ ios xcode linker amazon-web-services


【解决方案1】:

您是否将解压缩的适用于 iOS 的 AWS 开发工具包存储在 Windows 机器或基于 Windows 的文件服务器上?如果您在 Mac 上解压缩 SDK,您应该会获得额外的符号链接,但您似乎没有任何符号链接。使用非基于 Mac 的文件系统可能会删除这些符号链接。

您应该从 AWS 下载最新版本的 SDK,在 Mac 上解压并查看是否有额外的符号链接。如果您有任何问题,请告诉我。

【讨论】:

  • 存档是在无 Windows 的环境中处理的。它看起来越来越像亚马逊的错。
  • 我刚刚下载了 SDK,并且在 Mac 上获得了额外的符号文件。您是否尝试过重新下载并在 Mac 上打开它?你的磁盘格式类型是什么?你在使用文件服务器吗?如果是,文件服务器的磁盘格式是什么?你用的是什么拉链扩展器?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 2017-11-26
相关资源
最近更新 更多