2012-02-12 12 views
8

Bir iphone uygulaması geliştirirken C++ ve objektif-c'yi bir araya getirme konusunda bir sorun yaşadım. Uygulamada kullanmak için bir 3. parti kütüphanesi vardı. Kütüphaneyi sarmak için c veya C++ kullanmak için bir planım vardı ve onu aramak için objektif-c'yi kullandım. Sınıfı C++ ile bitirdikten sonra objektif-c'de kullanmakta zorlandım. Herhangi bir örnek kod var mı? Teşekkürler. Object-c başlık dosyasındaX ++ 4.2'de C++ ve objektif-c nasıl kullanılır?

.

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

Yazmak mı: Ben yazmak,

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

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

ve mm'lik dosyasında

yazma?

+0

Sorun nedir? –

+0

Gerçekten de .mm' dosyasını kullanıyorsunuz, sorun nedir? Bize karşı karşıya kaldığınız sorunu söylemediniz. – Krizz

+0

Bazı derleme hatası olduğunu söylüyor, bu yüzden sözdiziminde yanlış bir şey olup olmadığını merak ediyordum. – seanxiaoxiao

cevap

6

Dosyanızı, .m yerine .mm uzantısına sahip olacak şekilde yeniden adlandırın.

C++ kodunu Objective-C koduyla karıştırmak için Objective-C++ derleyicisine ihtiyacınız olacaktır. XCode varsayılan olarak Objective-C derleyicisi ile .m dosyalarını ve Objective-C++ bir ile .mm dosyaları derler.

8

XCode'da, tüm dosyaları Objective-C++ olarak derlemek için bir bayrak vardır. IOS programlarına büyük C++ kütüphaneleri derlemek için kullandım.

"Yapı Ayarları" na bakarsanız, "Kaynakları Farklı Olarak Derleme" yazılan bir yer vardır. Orada Objective-C++ seçebileceğiniz bir açılan menü var. Clang/gcc komut satırında "-x object-C++" olduğunu düşünüyorum. Objective-C kodundan

+1

Boyutu farketmez Ne yapman gerekiyor sadece C++ kodu içeren sınıfın .mm değerini değiştirin ... –

+3

@HikmatKhan Önem verdiğim şey, özellikle büyük (multierson) projelerde dosyaların yeniden adlandırılmasıdır. gerçekten bir seçenek değil. –

+0

Bu bayrak ne aradı ?! – kevlar

İlgili konular