2012-11-21 99 views
0

我正在研究一个iOS项目,其中有几个C++类。但是,编译它们似乎并不直接。我厌倦了不同的方法,但一直都会给出一些错误。C++ Xcode iOS项目错误

1)首先,我将.m;类重命名为.mm并尝试编译,并给出错误。在此行

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

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

2)当设置其它链接器标记将-ObjC++它给这两个错误。 未知类型名称'class';你的意思是'班'?

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

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

+0

链接器标志不会影响编译器。您是否尝试过为Objective-C++设置编译器选项? –

+0

是的,它给出了错误编号1. – Waruna

+0

第一个错误是由于不兼容的类型造成的。如果我对CoreAudio的这种假设是正确的,audioBufferList-> mBuffers [0] .mDat是缓冲区地址。指向相同缓冲区的SInt16 *和void *类型在涉及指针数学时不会表现相同。您需要将void *转换为SInt16 *,或者将editBuffer重新输入为符合类型,如void *或char *。 – CuriousRabbit

回答

1

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

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

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

Casting To and From void*

+0

非常感谢!为你答案 – Waruna