2012-11-21 8 views
0

몇 가지 C++ 클래스로 iOS 프로젝트에서 작업 중입니다. 그러나 그것들을 컴파일하는 것은 직설적이지 않습니다. 나는 여러 가지 방법을 피곤하지만 항상 오류가 있습니다.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

관련 문제