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

时间:2014-11-10 10:52:31

标签: c++ objective-c xcode objective-c++

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

as per suggestions given in this link

我也遇到过几篇StackOverflow的帖子,我发现要么必须使用C ++或Objective C源类型(作为少数成员的建议)。

我希望编译c ++代码和Objective C类,但我发现#include <cstdlib> and #include <string>

的文件未找到错误(编译时)

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

先谢谢!!!

1 个答案:

答案 0 :(得分:5)

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

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

    #ifdef __cplusplus
    #endif
    
  4. 块。也可以将此块用于提到C ++类的方法。 例如:

    #ifdef __cplusplus
    #include <string>
    using namespace std;
    #endif
    
    @interface SomeClass
    
    #ifdef __cplusplus
    - (void) setName:(const string&) name;
    #endif
    
    @end
    

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

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