2012-02-12 14 views
8

iphoneアプリの開発にC++とobjective-cを組み合わせるのに苦労しました。私はアプリで使用するサードパーティライブラリを持っていた。私は、ライブラリをラップしてobjective-cを使って呼び出すために、cまたはC++を使用する計画を持っていました。私がクラスをC++で終えた後、私はそれをobjective-cで使うのに苦労しました。サンプルコードはありますか?ありがとう。XCode 4.2でC++とobjective-cを一緒に使う方法

のobjective-cヘッドファイルです。私は私が書く、

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

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

とmmのファイルでの書き込み:

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

は、それが書きますか?

+0

何が問題なのですか? –

+0

本当に '.mm'ファイルを使用しているようですので、何が問題なのですか?あなたが直面している問題を教えてくれていない。 – Krizz

+0

コンパイルエラーがあると言われていますので、構文に何か間違いがないかどうか疑問に思っていました。 – seanxiaoxiao

答えて

5

は、Objective-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++"だと思います。 Objective-CのコードからC++コードを呼び出す

+1

サイズは関係ありませんあなたがしなければならないことは、C++コードを含むクラスに拡張子を.mmに変更することだけです... –

+3

@HikmatKhan私は、時には大きな(マルチパーソン)プロジェクトでファイルの名前を変更することを提案しています本当にオプションではありません。 –

+0

その旗は何ですか? – kevlar

関連する問題