2012-02-12 13 views
8

Podczas tworzenia aplikacji na iPhone miałem problemy z łączeniem C++ i obiektywu-c. W aplikacji miałem dostęp do biblioteki innej firmy. Miałem plan użyć c lub C++ do owinięcia biblioteki, a następnie użyj funkcji -c, aby ją nazwać. Po tym, jak skończyłem zajęcia z C++, miałem problem z użyciem go w funkcji -c. Czy jest jakiś przykładowy kod? Dzięki.Jak używać C++ i obiektywu-c razem w XCode 4.2

w pliku głowy obiektu c. Piszę

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

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

iw pliku mm, piszę:

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

Czy to napisać?

+0

Jakie kłopoty ...? –

+0

Wygląda na to, że rzeczywiście używasz pliku '.mm', więc jakie kłopoty? nie powiedziałeś nam, z jakim problemem stoisz. – Krizz

+0

Mówi, że jest jakiś błąd kompilacji, więc zastanawiałem się, czy w składni jest coś nie tak. – seanxiaoxiao

Odpowiedz

6

Wystarczy zmienić nazwę pliku, aby mieć rozszerzenie .mm zamiast .m.

Do miksowania kodu C++ z kodem Objective-C potrzebny jest kompilator Objective-C++. XCode domyślnie kompiluje pliki .m z kompilatorem Objective-C i .mm z plikami Objective-C++.

8

W kodzie X znajduje się flaga do kompilacji wszystkich plików jako Objective-C++. Użyłem go do kompilacji ogromnych bibliotek C++ do programów iOS.

Jeśli spojrzysz na "Ustawienia kompilacji", jest napisane miejsce "Skompiluj źródła jako". Tam jest rozwijane menu, w którym możesz wybrać Objective-C++. W linii poleceń clang/gcc uważam, że jest to "-x target-C++".

+1

Rozmiar nie ma znaczenia To, co musisz zrobić, to zmienić zmianę rozszerzenia na .mm na klasę zawierającą kod C++ ... –

+3

@HikmatKhan Sugerowałam, że czasami zmieniam nazwy plików, szczególnie w dużych (wieloosobowych) projektach tak naprawdę nie jest opcją. –

+0

Co to jest ta flaga ?! – kevlar