Xcode:与第三方框架链接和编译

时间:2012-11-08 12:26:53

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

简而言之

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

详细

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

  

按住Control键并单击“框架组”,然后单击“将文件添加到<项目名称>

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

这两种方法都没有奏效。编译器找不到头文件,链接器找不到二进制文件。此外,当框架出现在项目导航器中时,扩展节点没有显示任何内容,而其他框架通常包含其资源和包含文件。

嗤之以鼻我注意到框架的目录结构是:

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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