【问题标题】:swift compiler not able to find c++ libraries快速编译器无法找到 C++ 库
【发布时间】:2019-03-12 13:17:33
【问题描述】:

我从 Xcode 创建了两个单视图 iOS 项目。 Swift 中的第一个和 Objective-C 中的第二个。

在这两个项目中,我添加了仅包含 C++ 库的 Test.cpp / Test.hpp 文件。当然,对于 Swift 项目,我必须创建一个 Bridging Header 来导入这个文件。

Test.hpp 文件如下所示:

#ifndef TestCpp_hpp
#define TestCpp_hpp

#include <stdio.h>
#include <cstdlib>

#endif /* TestCpp_hpp */

我遇到的问题是Objective-C项目构建成功,同时Swift项目找不到cstdlib C++库。

我检查了编译命令,Swift 项目使用swift 来构建。 Objective-C 项目使用clang

我尝试在构建设置中更改C++ Language DialectC++ Standard Library,但没有任何效果。

为了能够构建 Swift 项目,是否需要进行一些特殊设置?

【问题讨论】:

  • 你能把xcode构建错误快照粘贴到这里吗?您使用的是哪个 xcode 版本? Test.cpp 文件中有代码吗?

标签: c++ ios objective-c swift objective-c++


【解决方案1】:

您不能在桥接头中包含 C++ 标头以直接从 Swift 调用 C++ 代码。本质上,至少有两种选择。

  • 围绕 C++ 代码编写 C 包装器并将 C 包装器合并到 通过桥接头 Swift。
  • 使用不涉及 C++ 的 API 编写 Objective-C++ 包装器 类型。在内部,包装器实现可以调用 C++ 代码。在 Swift 中调用包装 API,就像调用任何 Objective-C 代码一样。

这里描述了这两种方法:

Interacting with C++ classes from Swift

【讨论】:

    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 2012-12-19
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多