2012-02-12 17 views
8

Ho avuto difficoltà a combinare C++ e ogg-c insieme nello sviluppo di un'app per iphone. Ho avuto una libreria di terze parti da utilizzare nell'app. Avevo un piano per usare c o C++ per avvolgere la libreria e poi usare l'obiettivo-c per chiamarla. Dopo aver terminato la lezione con C++, ho avuto problemi ad usarlo in ogg-c. C'è qualche codice di esempio? Grazie.Come utilizzare C++ e objective-c insieme in XCode 4.2

nel file di testa obiettivo-c. Scrivo

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

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

e nel file mm, scrivo:

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

Is scrivi?

+0

Che problema ...? –

+0

Sembra che tu stia effettivamente usando il file '.mm', quindi, qual è il problema? non ci hai detto quale problema stai affrontando. – Krizz

+0

Dice che ci sono alcuni errori di compilazione, quindi mi chiedevo se c'è qualcosa di sbagliato nella sintassi. – seanxiaoxiao

risposta

5

Chiamate al codice C++ dal codice Objective-C comporta che termina il file con .mm (invece di .m) in modo che verrà utilizzato il compilatore Objective-C++.

Questo compilatore può comprendere sia C++ che Objective-C.

In altre parole, il compilatore ObjC++ consente di inserire il codice C++ direttamente nei metodi Objective-C e viceversa.

Date un'occhiata a Cocoa_With_Carbon_or_CPP example e Strategies for Using C++ in Objective-C Projects (and vice versa) articolo.

6

Basta rinominare il file per avere un'estensione .mm anziché .m.

Per combinare codice C++ con codice Objective-C, è necessario il compilatore Objective-C++. XCode compila per default i file .m con il compilatore Objective-C e quelli .mm con Objective-C++.

8

In XCode è presente un flag per compilare tutti i file come Objective-C++. L'ho usato per compilare enormi librerie C++ in programmi iOS.

Se si guardano le "Impostazioni di compilazione", c'è un posto scritto "Compila fonti come". C'è un menu a tendina dove puoi selezionare Objective-C++. Nella riga di comando clang/gcc penso che sia "-x objective-C++".

+1

Le dimensioni non contano Quello che devi fare è cambiare l'estensione in .mm della classe che contiene il codice C++ ... –

+3

@HikmatKhan Quello che stavo suggerendo è che a volte rinominare i file, specialmente nei progetti grandi (multiperson) non è davvero un'opzione. –

+0

Come si chiama quella bandiera ?! – kevlar

Problemi correlati