2010-04-21 3 views
21

Objective-C에서 C++ 객체를 사용/재사용하고 싶습니다. 클래스 정의가있는 hello.h와 클래스 구현을위한 hello.cpp가 있습니다.Xcode에서 Objective-C와 함께 C++을 사용하는 방법

class Hello 
{ int getX() ... }; 

그리고이 클래스는 Objective-C 함수에서 사용합니다.

#include "hello.h" 
... 
- (IBAction) adderTwo:(id)sender 
{ 
    Hello *hi = new Hello();    
    int value = hi->getX(); 
    NSLog(@"Hello %d", value); 
    [textField setIntValue:value]; 

Xcode에서 코드를 컴파일하면이 오류 메시지가 나타납니다.

 
class Hello *XXXXX 
Users/smcho/Desktop/cocoa/adderTwo/hello.h:9:0 
/Users/smcho/Desktop/cocoa/adderTwo/hello.h:9: 
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Hello' 

무엇이 잘못 되었습니까?

+0

을 선택 월이뿐만 아니라 도움 : https://stackoverflow.com/a/32546879/1306012 또는 http://philjordan.eu/article/mixing-objective-c-c++-and-objective-c++ –

답변

34

해당 파일을 "Objective-C++"로 컴파일해야합니다.

가장 간단한 방법은 * .mm으로 바꿉니다.

당신이 *하는 .m 파일의 이름을 변경하지 않으려면

,

  1. 는 파일을 선택합니다.
  2. 열기 [파일 정보] 대화 상자 (Cmd를 + I) 파일 형식에서
  3. 는 "sourcecode.cpp.objcpp"
+0

감사합니다. 내 두 개의 미친 날을 맞이했던 유사한 문제를 발견하도록 도왔습니다. –

7

목표 -C 파일 이름을 filename.m에서 filename.mm으로 변경하여 Objective-C++로 컴파일하십시오.

관련 문제