在Xcode中编译#include <cstdlib> - 编译时出错:找不到文件

San*_*ade 2 c++ xcode objective-c objective-c++

我在我的项目中添加了一个框架,在哪里获取我需要实现c ++代码的框架的回调,我已经从.cpp中添加了.mm类的c ++类

根据此链接中的建议

我还发现了一些StackOverflow的帖子,我发现要么我必须使用C++或Objective C源类型(作为少数成员的建议).

我期待编译c ++代码以及Objective C类,但我得到文件未找到错误(编译时) #include <cstdlib> and #include <string>

请让我知道任何一个解决它的人.或面临同样的问题.

提前致谢!!!

Cy-*_*4AH 5

我认为问题是你的.h文件,你已经添加了C++包含在其他.m文件中,而不仅仅是.mm文件.有几种方法可以解决这个问题:

  1. 使用C++仅包含.mm文件.(不要在.h中使用它们)
  2. 更改将您的标头导入.mm的所有文件
  3. 包括他们

    #ifdef __cplusplus
    #endif
    
    Run Code Online (Sandbox Code Playgroud)

块.也可以将此块用于提到C++类的方法.例如:

#ifdef __cplusplus
#include <string>
using namespace std;
#endif

@interface SomeClass

#ifdef __cplusplus
- (void) setName:(const string&) name;
#endif

@end
Run Code Online (Sandbox Code Playgroud)

还有一种方法可以#ifdef #endif通过使用扩展和类别来避免阻塞:

  1. 仅在扩展中声明C++的实例变量.
  2. 使用C++的类型为方法和属性创建带有附加.h文件的类别.