Objective-C ++编译为iPhone,但不是模拟器

时间:2010-04-09 10:39:56

标签: c++ iphone objective-c ios-simulator objective-c++

我想要添加到我的iphone项目中的C ++库。

在一个头文件中,我声明了

@interface a
{
   cppvirtualclass V;
}

这适用于具有发布设置的iPhone设备。但是,无论是否使用调试信息,它都拒绝为模拟器编译。

它给出错误

error: type 'V' has virtual member functions.

有没有办法解决这个问题,还是只需要定义具体的C ++类?

2 个答案:

答案 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 ++。