【问题标题】:Wrap a C++ library in Swift code, compile as a Cocoa Touch framework用 Swift 代码包装 C++ 库,编译为 Cocoa Touch 框架
【发布时间】:2018-04-15 04:46:03
【问题描述】:

我有一个 C++ 库,里面充满了缺陷和奇怪的特性,我想让它在 Swift 项目中更容易使用(和重用)。所以我打算将这个 C++ 库封装在一些 Swift 代码中,然后将其作为 Cocoa Touch 框架提供。

我已将我的(胖).a 文件和所需的.h 文件添加到我的项目中,然后将.a 添加到构建阶段的“将二进制文件与库链接”部分,并添加了主.h 文件添加到 Headers 构建阶段的 Project 部分。但构建失败:

找不到 -lMyLib 的库

我显然在这里遗漏了一些东西 - 我猜我可能需要调整框架搜索路径和/或标题搜索路径?还是我错过了更基本的东西?我想要的最终结果是 .framework 另一个开发人员可以拉入他们的 Swift 项目,而无需进行任何其他构建设置调整。

【问题讨论】:

  • 你不能直接链接 Swift 和 C++。你需要一个 C 或 ObjC 包装器。

标签: swift xcode cocoa-touch


【解决方案1】:

您可能正在寻找“图书馆搜索路径”(LIBRARY_SEARCH_PATHS)。您可能还需要添加到“标题搜索路径 (HEADER_SEARCH_PATHS),具体取决于您的设置。在这种情况下,您不必在框架搜索路径中添加任何内容,因为您不是在处理框架。

(顺便说一句,您可能会发现您必须将 C++ 库包装在 Objective-C++ 代码中才能将功能公开给 Swift。)

【讨论】:

  • Objective-C++ 或 C 垫片。后者的重量会更轻,但可能更难。
猜你喜欢
  • 2015-03-18
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
相关资源
最近更新 更多