如何在XCode中使用C++与Objective-C?

22

我想在Objective-C中使用/重用C++对象。 我有一个hello.h文件,其中包含类定义,以及hello.cpp用于类实现。

class Hello
{ int getX() ... };

我在 Objective-C 函数中使用了这个类。

#include "hello.h"
...
- (IBAction) adderTwo:(id)sender
{
    Hello *hi = new Hello();            
    int value = hi->getX();
    NSLog(@"Hello %d", value);
    [textField setIntValue:value];

在Xcode编译代码时,我收到了这个错误消息。

class Hello *XXXXX
Users/smcho/Desktop/cocoa/adderTwo/hello.h:9:0
/Users/smcho/Desktop/cocoa/adderTwo/hello.h:9: 
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Hello'

出了什么问题?


希望这也有所帮助:https://dev59.com/7VwY5IYBdhLWcg3wgX-V#32546879 或 http://philjordan.eu/article/mixing-objective-c-c++-and-objective-c++ - Bruno Bieri
2个回答

35

请确保将该文件编译为“Objective-C++”。

最简单的方法是将其重命名为*.mm

如果不想重命名*.m文件,

  1. 选择您的文件。
  2. 打开文件信息对话框(Cmd+I)
  3. 在文件类型中,选择“sourcecode.cpp.objcpp”

谢谢你!你帮我发现了一个类似的问题,这个问题让我疯狂地花费了两天时间。 - Almas Adilbek
现在Xcode显示了一个更易理解的建议Objective-C++源代码。 - Pranav Kasetti

10

将Objective-C文件从filename.m重命名为filename.mm,以便编译为Objective-C++。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接