c++ - 一起构建 Swift、Objective-C 和静态 C++ 库

标签 c++ objective-c swift xcode

我有一个来自第三方 SDK 的静态库 — 它是 FIT SDK,可对“灵活且可互操作的数据传输协议(protocol)”进行编码和解码,用于各种运动和健身设备。它是一种二进制格式,在 SDK 中有详细描述,它还附带了一堆 CPP、C-Sharp 和 Objective-C 示例 — 以及一个从 CPP 源代码构建的静态库。

根据每个人的说法,我应该能够使用静态库构建我的 Swift 应用程序,包括必需的桥接 header 。

我制作了一个屏幕流 ( https://vimeo.com/205082135 ) 来展示发生了什么,这就是我来这里的原因。

我可以获得 Xcode 8(测试版 3)来构建一个包含库甚至一些 Objective-C 代码的全新项目。一旦我添加了桥接 header ,即使有一个基本的包含,XCode 也会出现链接器错误,提示它无法从标准 C++ 库中找到一些类,比如 or 。 听起来像是 Xcode 的配置管理问题,我根本无法解决。

我的库示例项目在这里:https://github.com/bleeckerj/Xcode-FIT-TEST

有人见过这种事吗?

最佳答案

因此,通过一些帮助以及大量时间和试验,我设法解决了问题并回答了我自己的问题。

实际上,我们需要一个围绕 C++(或 Objective-C++)类的 Objective-C 包装器,其中包含您想要公开并从 Swift 调用的代码。然后是仅公开该 Objective-C 类的桥接 header 。这个特殊的桥接 header 听起来很简单,现在它实际上很简单——但这对我来说是个谜。这是一个很长的故事,所以我将其作为示例存储库的一部分进行解释 https://github.com/bleeckerj/fit-sdk-with-swift派生自 FIT SDK,通过示例回答问题。

希望这能够帮助遇到此问题的任何人。

关于c++ - 一起构建 Swift、Objective-C 和静态 C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42383838/

相关文章:

c++ - 双重条件在 C++ 中不起作用

objective-c - iOS+9中如何从通讯录框架获取家乡城市?

swift - 我什么时候进行 API 调用

ios - xcode预览无法构建到项目中

ios - 如果输出大于某个数字则打印行

c++ - 如何在 C++ 中读取键盘输入?

c++ - 如何在 doxygen 中创建状态图?

c++ - 使用#define 声明常量有什么好处?

ios - 使用委托(delegate)将 NSMutableArray 传回之前的 View Controller

objective-c - 深入了解 Objective-C 中强指针和弱指针的实际应用