Qt:Objective-C头被编译为c ++ - 头

时间:2016-01-21 15:17:31

标签: c++ objective-c qt pimpl-idiom

我目前正在尝试实现PIMPL-Idiom将Objective-C功能封装在 Qt 的C ++类中。我的专业文件如下所示:

QT += core gui
TARGET = testProject
TEMPLATE = app
SOURCES += main.cpp Helper.cpp
HEADERS += HelperInterface.h Helper.h

OBJECTIVE_SOURCES += ObjCHelper.mm
OBJECTIVE_HEADERS += ObjCHelper.h

ObjCHelper.h是Objective-C标头

#import "HelperInterface.h"

@interface ObjCHelper : NSObject { int someVar }
- (int) doSomething():(void *)param;
@end

ObjCHelper.mm

#import "ObjCHelper.h"

@implementation ObjCHelper
MyClassImpl::MyClassImpl() : self(NULL) { }
MyClassImpl::~MyClassImpl() {
    [(id)self dealloc];
}
void MyClassImpl::init()
{
    self = [[ObjCHelper alloc] init];
}
//...
@end

MyClassImpl类在HelperInterface中定义。

当我尝试编译此项目时,我收到以下错误:

cannot find interface declaration for 'NSObject', superclass of 'ObjCHelper'
@interface ObjCHelper : NSObject
~~~~~~~~~~~~~~~~~~~~~   ^

在我看来,Qt将Objective-C头文件ObjCHelper.h视为普通的c ++头文件!为什么会这样?

标题文件ObjCHelper.h不包含在ObjCHelper.mm

之外的任何地方

1 个答案:

答案 0 :(得分:1)