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

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

我有一个 C++ 库,我想添加到我的 iphone 项目中。

在一个头文件中声明

@interface a
{
   cppvirtualclass V;
}

对于具有 Release 设置的 iPhone 设备,这可以很好地编译。但是,无论有无调试信息,它都拒绝为模拟器编译。

报错

error: type 'V' has virtual member functions.

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

最佳答案

默认情况下,Objective C 在创建 Objective C 对象时不会在 C++ 实例变量上运行构造函数。这意味着(我认为)C++ 对象的 vtable 将无法正确初始化。

尝试使您的实例变量成为指针并在 init 方法中分配它(并在 dealloc/finalize 中销毁它)。

或者

尝试在目标代码生成设置中设置“在 Ovjective-C 中调用 C++ 默认 Ctors/Dtors”。

(GCC_OBJC_CALL_CXX_CDTORS,-fobjc-call-cxx-cdtors)

关于c++ - Objective-C++ 为 iPhone 编译,但不是模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2606705/

相关文章:

ios - Xcode:从父项目继承 `configuration` s - 不可能吗?

objective-c - 如何从 Swift 调用 Objective-C 代码?

c++ - QTreeView在主要功能之外不起作用

C++ cout 在两个大十进制数(long double)之间的运算后打印 "inf "

iphone - 条件不满足时退出函数

ios - 退出时保存当前状态,重新打开应用程序时自动重新加载

ios - 尝试通过 XCode 上传二进制文件时出现 "Invalid image path"错误

c++ - 基于开关的协程

c++ - 将函数作为构造函数参数传递未被正确识别

iphone - UIWebView、SSL 和导出合规性