我正在尝试与 Swift 中的基本 C++ 方法进行互操作。但是当我构建项目时 Xcode 给我一个错误;
'string' file not found
我在 StackOverflow 上研究过这个问题,但每个解决方案和答案都没有解决我的问题。我开始思考如果我使用 libstdc++ 而不是 libc++ 会怎样。然后我发现libstdc++被Xcode 10删除了。我在Github上找到了这些文件并将其应用到适当的文件目录中。但这也没有多大作用。你们以前遇到过这样的问题吗?
这是我的头文件。
#ifndef CPPTest_hpp
#define CPPTest_hpp
#include <string>
std::string saySomething();
#ifdef __cplusplus
extern "C" {
#endif
int returnNumber();
#ifdef __cplusplus
}
#endif
#endif CPPTest_hpp
这是cpp文件。
#include "CPPTest.hpp"
std::string saySomething()
{
return "Welcome to C++";
}
int returnNumber()
{
return 10;
}
这是我向 Swift 公开标头的地方
#include "CPPTest.hpp"
毕竟,当我构建项目时。它给了我一个类似的错误;
找不到“字符串”文件
为什么会出现这个错误?
顺便说一下,当我使用整数作为返回类型及其在 cpp 文件中的适当实现时,它就可以工作。
如果你偶然发现这个问题,我的问题是
MODULE_VERIFIER_SUPPORTED_LANGUAGES
构建设置包括objective-c和objective-c++。显然,在 Objective-C 中,没有来自 C++ 的
<string>
标头。
使用
#ifdef __cplusplus
宏或更改以上 Xcode 构建设置以仅包含 c++ 和/或 Objective-c++。