我有一个关于为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();
}
答案 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。
编辑:
代码中的错误是因为,编译器无法找到结构的定义。编译器需要知道结构的大小。没有它的定义,它就无法创建对象。即使您在堆栈上创建对象,也是如此。