1

我有一个主要使用 C++ 的项目,但我正在尝试链接到 Objective-C++ 库。我有一个看起来像这样的标题:

CPlus.h:

#import "OBJCObject.h"

class CPlus {
  OBJCObject *someObj;

};

CPlus.mm:

CPlus::CPlus() {
  someObj = [[OBJCObject alloc] init];
}

当我将 Objective-C++ 标头导入我的代码时,我最终会遇到来自 iPhone SDK 内部的数千个错误。似乎有些东西正在将一种语言视为另一种语言。对不起,如果这个描述很差,我是新手,有点困惑。

你可以在 C++ 类中包含 Objective-C / Objective-C++ 类型吗?您需要做一些特别的事情来包含其他类型的标题吗?

4

2 回答 2

3

您是#import从 Objective-C (.m) 文件中获取 CPlus.h 吗?如果是这样,它将无法理解 C++ 类,因为它是使用 C 语义编译的,并且不支持 Objective-C++。.m 编译器会看到class但不知道该怎么做。

您可以在 C++ 类定义中包含 Objective-C 对象,反之亦然,只要源文件是 .mm。

于 2009-07-03T20:53:30.713 回答
0

以下构建可以使用 iPhone SDK。确保声明 c++ 构造函数,并在 .mm 文件中实现它。

OBJCObject.h

#import <Foundation/Foundation.h>

@interface OBJCObject : NSObject {
}

@end

OBJCObject.m

#import "OBJCObject.h"

@implementation OBJCObject

@end

CPlus.h

#import "OBJCObject.h"

class CPlus {
    OBJCObject *someObj;
    CPlus();
};

CPlus.mm

#include "CPlus.h"

CPlus::CPlus() {
    someObj = [[OBJCObject alloc] init];
}
于 2009-07-03T20:59:55.147 回答