C++ Xcode iOS 项目错误

Posted

技术标签:

【中文标题】C++ Xcode iOS 项目错误【英文标题】:C++ Xcode iOS project errors 【发布时间】:2012-11-21 18:53:21 【问题描述】:

我正在开发一个包含多个 c++ 类的 ios 项目。但看起来编译它们并不简单。我厌倦了不同的方法,但总是给出一些错误。

1) 首先我将 .m;class 重命名为 .mm 并尝试编译,但它给出了错误。在这一行

SInt16 *editBuffer = audioBufferList->mBuffers[0].mDat;

Error - "Cannot initialize a variable of type 'SInt16 *' (aka 'short *') with an lvalue of type 'void *'"

2) 将 Other Linker Flags 设置为 -ObjC++ 时,会出现这两个错误。 未知类型名称“类”;你是说“类”吗?

'deque' file not found - for #include<deque>

任何人都有任何想法,这里有什么问题。提前致谢。

【问题讨论】:

链接器标志不会影响编译器。您是否尝试过为 Objective-C++ 设置编译器选项? 是的,它给出了错误号 1。 第一个错误是由于类型不符合。如果我对涉及 CoreAudio 的假设是正确的,那么 audioBufferList->mBuffers[0].mDat 就是缓冲区地址。指向同一缓冲区的 SInt16* 和 void* 类型在涉及指针数学时的行为将不同。您需要将 void* 强制转换为 SInt16*,或将 editBuffer 重新键入为兼容类型,例如 void* 或 char*。 【参考方案1】:

第一个错误是预期的。 C++ 对 void 指针很挑剔。

SInt16 *editBuffer = (SInt16 *)(audioBufferList->mBuffers[0].mDat);

SInt16 *editBuffer = static_cast<SInt16 *>(audioBufferList->mBuffers[0].mDat);

见Casting To and From void*。

【讨论】:

非常感谢!为你解答

以上是关于C++ Xcode iOS 项目错误的主要内容,如果未能解决你的问题,请参考以下文章

Xcode iOS 项目在我添加 C++ 代码时失败

iOS xcode 11 新项目多个错误

为啥我的 XCode 项目包含错误的 iOS 应用程序图标文件?

编译包含 iOS 8 App Extension 的 Xcode 项目时生成错误

Cordova,错误:安装插件时似乎不是 xcode 项目(没有 xcode 项目文件)

更新到 Xcode 11.3.1 后,在 Xamarin Forms iOS 项目中出现错误“无法解析 AuthenticationServices.IASAuthorizationControlle