如何为C ++编写Objective C Wrapper

时间:2013-11-06 03:32:03

标签: c++ ios iphone objective-c

我有一个关于为c ++编写目标C包装器的问题。当我尝试构建它时,这是我的代码中的错误。我不确定我做错了什么。真的很感激任何帮助或指导。以下是我编写的示例代码:

///Print.h///
int test1();

///Print.cpp///

int test1()
{
    printf ("hello man\n");
}

///cppWrapper.h///

struct Print;

typedef struct Print Print;

@interface cppWrapper : NSObject
{
    Print *print;
}
@property (nonatomic, assign) Print *print;

-(id)init;

-(int)runTest;

///cppWrapper.mm///

#import "cppWrapper.h"

@implementation cppWrapper

@synthesize print = _print;

- (id)init
{
    self = [super init];

    if (self)
    {
        _print = new Print(); //error occurred here. 
    }

    return self;
}

-(int)runTest
{
    self.print->test1();
}

1 个答案:

答案 0 :(得分:0)

C ++的Objective-C包装器没有用Objective-C代码实现。

要实现它,请使用纯C函数。

在纯C函数下,实现Objective-C代码。在C ++代码中,使用C函数调用objective-C代码。

Objective-C不理解C ++。

而是使用Objective-C ++来使用C ++代码。

在objective-C ++中,您可以使用C ++代码。将文件另存为.mm而不是.m。

编辑:

代码中的错误是因为,编译器无法找到结构的定义。编译器需要知道结构的大小。没有它的定义,它就无法创建对象。即使您在堆栈上创建对象,也是如此。