一言以蔽之
为了编译我的 C++ iOS 代码并将其与 Amazon AWS SDK 链接,我必须修改 AWS 框架目录的结构。我试图了解我做错了什么。
详细
我有一个适用于 iOS 的 Xcode C++ 项目需要与亚马逊的 AWS SDK 集成。我下载了最新版本的 SDK。 SDK 作为框架分发。根据亚马逊的文章 Getting Started with the AWS SDK for iOS ,我所要做的就是:
Control-click Frameworks Group, then click Add files to < project name >
根据其他 Internet 资源和我个人的知识,我知道将框架添加到项目的“使用库构建二进制文件”构建阶段也应该有效。
这两种方法都行不通。编译器找不到头文件,链接器也找不到二进制文件。此外,当该框架出现在项目导航器中时,展开节点什么也没有,而其他框架通常包含其资源和包含文件。
四处嗅探,我注意到框架的目录结构是:
AWSiOSSDK.framework/
Versions/
A/
Headers/
Resources/
AWSiOSSDK
据我所知,这并不完全是 Apple requires它是。因此,在绝望的尝试中,我删除了 Versions/A
部分;即,将框架的所有内容立即放在 AWSiOSSDK.framework
目录下。
令人惊讶的是,这解决了所有问题 - header 已找到,二进制文件已链接,一切正常。现在我想知道为什么。我假设由像亚马逊这样受人尊敬的公司分发的框架应该有一个正确的形式。那为什么没用呢?为什么我修改后的结构有效?是否有不同结构的框架?我如何告诉编译器和链接器接受原始形式?还是亚马逊会分发损坏的 bundle ?
最佳答案
您是否将解压缩后的适用于 iOS 的 AWS 开发工具包存储在 Windows 机器或基于 Windows 的文件服务器上?如果您在 Mac 上解压 SDK,您应该会得到额外的符号链接(symbolic link),但您似乎没有任何符号链接(symbolic link)。使用非基于 Mac 的文件系统可能会删除这些符号链接(symbolic link)。
您应该从 AWS 下载最新版本的 SDK,在 Mac 上将其解压缩,然后查看是否有额外的符号链接(symbolic link)。如果您有任何问题,请告诉我。
关于c++ - Xcode:与第 3 方框架链接和编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13289123/