2012-02-12 3 views
8

iphone 앱을 개발할 때 C++과 objective-c를 함께 사용하는 데 어려움이 있습니다. 앱에서 사용할 제 3 자 라이브러리가 있습니다. C 또는 C++을 사용하여 라이브러리를 랩핑 한 다음 objective-c를 사용하여 호출하도록 계획했습니다. C++로 수업을 마친 후에는 객관적으로 사용하는 데 어려움이있었습니다. 샘플 코드가 있습니까? 감사.Xcode 4.2에서 C++와 objective-c를 함께 사용하는 방법

을 objective-head 파일에 넣습니다.

if (self) { 
    adapter = Adapter::getInstance(); 
    // Custom initialization 
} 

가 작성되어 : 내가 쓰고,

#import <UIKit/UIKit.h> 
#import "ZJTConstants.h" 
#include "TTSAdapter.h" 

class Adapter; 
@interface ZJTVBlogViewController : UIViewController { 
@private 
    Adapter* adapter; 
} 
@end 

와 mm 파일에

쓰기?

+0

무슨 문제가 있습니까? –

+0

실제로'.mm' 파일을 사용하고있는 것 같습니다. 그래서 문제가 무엇입니까? 당신은 당신이 직면 한 문제를 말하지 않았습니다. – Krizz

+0

그것은 약간의 컴파일 오류가 있다고 말합니다. 그래서 구문에 문제가 있는지 궁금합니다. – seanxiaoxiao

답변

5

호출 C++ 코드는 목표 - C++ 컴파일러가 사용되도록 (대신하는 .m의) .mm로 파일을 종료 포함한다.

이 컴파일러는 C++과 Objective-C를 모두 이해할 수 있습니다.

즉, ObjC++ 컴파일러를 사용하면 C++ 코드를 Objective-C 메소드에 직접 입력 할 수 있으며 반대의 경우도 마찬가지입니다.

Cocoa_With_Carbon_or_CPP exampleStrategies for Using C++ in Objective-C Projects (and vice versa) 문서를 참조하십시오.

6

.m 대신 파일 이름의 확장자를 .mm으로 변경하십시오.

Objective-C 코드로 C++ 코드를 혼합하려면 Objective-C++ 컴파일러가 필요합니다. 기본적으로 XCode는 Objective-C 컴파일러를 사용하는 .m 파일과 Objective-C++를 사용하는 .mm 파일을 컴파일합니다.

8

XCode에는 모든 파일을 Objective-C++로 컴파일하는 플래그가 있습니다. 거대한 C++ 라이브러리를 iOS 프로그램으로 컴파일하는데 사용했습니다.

"빌드 설정"을 보면 "소스를 다른 이름으로 컴파일"이라고 적혀 있습니다. Objective-C++를 선택할 수있는 드롭 다운 메뉴가 있습니다. clang/gcc 명령 줄에서 "-x objective-C++"라고 생각합니다. 목표 - C 코드에서

+1

크기가 중요하지 않습니다. 당신이해야 할 일은 C++ 코드를 포함하는 클래스의 확장자를 .mm로 변경하는 것입니다 ... –

+3

@HikmatKhan 제가 제안했던 것은 때로는 큰 (다중 파일) 프로젝트에서 파일 이름을 바꾸는 것입니다. 정말 옵션이 아닙니다. –

+0

그 깃발은 무엇입니까?! – kevlar

관련 문제