我想要添加到我的iphone项目中的C ++库。
在一个头文件中,我声明了
@interface a
{
cppvirtualclass V;
}
这适用于具有发布设置的iPhone设备。但是,无论是否使用调试信息,它都拒绝为模拟器编译。
它给出错误
error: type 'V' has virtual member functions.
有没有办法解决这个问题,还是只需要定义具体的C ++类?
答案 0 :(得分:2)
默认情况下,Objective C在创建Objective C对象时不会在C ++实例变量上运行构造函数。这意味着(我认为)C ++对象的vtable将无法正确初始化。
尝试将实例变量作为指针并在init方法中进行分配(并在dealloc / finalize中将其销毁)。
或者
尝试在目标代码生成设置中设置“在Ovjective-C中调用C ++默认Ctors / Dtors”。
(GCC_OBJC_CALL_CXX_CDTORS,-fobjc-call-cxx-cdtors)
答案 1 :(得分:0)
此外,Objective-C ++不再是iPhone开发的允许语言(根据4.0)。您可以使用Objective-C,C和C ++,但不能使用Objective-C ++。