简而言之
为了使用 Amazon AWS SDK 编译和链接我的 C++ iOS 代码,我必须修改 AWS 框架目录的结构。我试图理解我做错了什么。
详细地
我有一个适用于 iOS 的 Xcode C++ 项目,需要与亚马逊的 AWS 开发工具包集成。我下载了最新版本的 SDK。SDK 作为框架分发。根据 Amazon 的文章Getting Started with the AWS SDK for iOS,我所要做的就是:
按住 Control 键单击 Frameworks Group,然后单击将文件添加到 <项目名称>
根据其他 Internet 资源和我的个人知识,我知道将框架添加到项目的“使用库构建二进制文件”构建阶段也应该有效。
这两种方法都不起作用。编译器找不到头文件,链接器也找不到二进制文件。而且,当框架出现在项目导航器中时,展开节点什么都没有显示,而其他框架通常包含它们的资源和包含文件。
环顾四周,我注意到框架的目录结构是:
AWSiOSSDK.framework/
Versions/
A/
Headers/
Resources/
AWSiOSSDK
据我了解,这并不完全符合Apple 的要求。因此,在绝望的尝试中,我删除了该Versions/A
部分;即,将框架的所有内容直接放在AWSiOSSDK.framework
目录下。
令人惊讶的是,它解决了所有问题 - 找到了标头,链接了二进制文件,一切正常。现在我想知道为什么。我假设由亚马逊这样受人尊敬的公司分发的框架应该具有正确的形式。那为什么没用呢?为什么我修改后的结构有效?有不同结构的框架吗?如何告诉编译器和链接器接受原始形式?还是亚马逊分发损坏的捆绑包?