2011-01-26 13 views
3

私は最近、私のクラスにいくつかのOpenFeintをのコードを追加し、私が構築したときにシンボルを複製エラーがオブジェクト・ファイルにあり得る突然の重複シンボル

すべてを.mmするためにそれらを変更しました。

LD:何とか何とか/Objects-normal/i386/Stage2.oにシンボル_audioPlayerを複製および/またはユーザ/何とか何とか.build /デバッグiphonesimulator/blah.build /オブジェクト正常I386// Stage1.o

なぜこのエラーが突然発生していますか?エラーは何ですか?

異なるクラスに同じ名前の変数がありますが、それは問題になるはずですか?短い答えはあなたがGCCへのコマンドライン引数で、このエラーを抑制することができるということです

おかげ

答えて

3

あなたは、おそらく2つの変数を宣言していますグローバルスコープ内の同じ名前(インターフェイス内ではない)であり、リンカはそれについて不平を言っています。

1

: -Wl、 - 許可 - 複数定義

+0

これをXcodeでどうやって行うのですか?ありがとう – jarryd

+1

私はXCodeに慣れていませんが、GCCを使ってコンパイルしていますか?もしそうなら、そのコマンドラインオプションはGCCがあなたのファイルに対して呼び出されたときに渡すでしょう。 –

+1

他のコンパイラフラグのプロジェクト/ターゲット設定でこれを設定できます –

1

次のようなメソッドを.mmファイルに実装すると、duplicate symbol errorが発生します。

#import <Foundation/Foundation.h> 

class CppTestOne 
{ 
public: 
    void Test(); 
// { 
//  NSLog(@"Hello C Plus Plus"); 
// } 
}; 

void CppTestOne::Test() 
{ 
    NSLog(@"Hello C Plus Plus"); 
} 

その後、あなたは代わりの.hの.Mファイルをインポートする場合は、このエラーの詳細

3

明確ではない、このエラーも発生する可能性があります

#import <Foundation/Foundation.h> 

class CppTestOne 
{ 
public: 
    void Test() 
    { 
     NSLog(@"Hello C Plus Plus"); 
    } 
}; 

//void CppTestOne::Test() 
//{ 
// NSLog(@"Hello C Plus Plus"); 
//} 

してメソッドを実装することができます。

#import "SomeClass.m"