我正在尝试混合C++和Objective-C,我已经完成了大部分工作,但我希望在Objective-C和C++代码之间有一个单一的接口类。因此,我希望在ViewController接口中有一个持久的C++对象。
这会因为禁止声明没有类型的“myCppFile”而失败:
#import <UIKit/UIKit.h>
#import "GLView.h"
#import "myCppFile.h"
@interface GLViewController : UIViewController <GLViewDelegate>
{
myCppFile cppobject;
}
@end
然而,这在.mm实现文件中工作得很好(它不工作,因为我希望cppobject在调用之间保持不变)。
#import "myCppFile.h"
@implementation GLViewController
- (void)drawView:(UIView *)theView
{
myCppFile cppobject;
cppobject.draw();
}
发布于 2010-02-15 02:45:36
确保所有包含GLViewController.h
的文件都是Objective-C++源代码(*.mm)。
当您在视图控制器的头中包含C++代码时,所有导入此头的源代码都必须能够理解它,因此它们必须是Objective-C++
发布于 2013-08-11 23:52:27
您需要在.mm文件的接口块中声明C++对象。
在.mm中:
#include "SomeCPPclass.h"
@interface SomeDetailViewController () {
SomeCPPclass* _ipcamera;
}
@property (strong, nonatomic) UIPopoverController *masterPopoverController;
- (void)blabla;
@end
发布于 2010-02-15 01:41:34
我认为您需要在您的项目设置中将以下标志设置为true
:
GCC_OBJC_CALL_CXX_CDTORS = YES
这应该允许您在Objective-C类中实例化C++对象。
https://stackoverflow.com/questions/2262011
复制相似问题