【发布时间】: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/Headers和Versions/A/*Binary name*的符号链接。 -
@Olotiar,是的,我刚刚阅读了有关它的 Apple 文档。会不会是亚马逊分发了损坏的捆绑包?
-
好吧,我从来没有使用过亚马逊的捆绑包,但如果文档说明这是必要的,而且他们的捆绑包不是这样形成的,它可能是。重要的是它现在可以工作了。
标签: c++ ios xcode linker amazon-web-services