2012-04-06 17 views
2

基本的なObjective-C++ファイルからCocoa Framework(MultitouchSupport、具体的には)を使用しようとしていますが、g ++があたかも定義されていないシンボルエラーgccよりもリンカーのフラグが違うはずです。C++とObjective-C++のCocoaフレームワークとのリンク

私の究極の目標は、ここから得たいくつかの基本的なObjective-CコードとC++ネットワーキングライブラリを統合することです:http://steike.com/code/multitouch/

私は元のコードをコンパイルするために、これを実行すると、それが正常に動作します:

gcc -F/System/Library/PrivateFrameworks -framework MultitouchSupport test.m -o test -std=c99 

しかし、それは、後にC++ファイルをインクルードし、参照できるように、私は、test.mmにファイルの名前を変更する場合、次のようにはありません作品:

g++ -F/System/Library/PrivateFrameworks -framework MultitouchSupport test.mm -o test 

、私にこれらのエラーを与える:

Undefined symbols for architecture x86_64: 
"MTDeviceCreateDefault()", referenced from: 
    _main in ccq0vzuM.o 
"MTRegisterContactFrameCallback(void*, int (*)(int, Finger*, int, double, int))", referenced from: 
    _main in ccq0vzuM.o 
"MTDeviceStart(void*, int)", referenced from: 
    _main in ccq0vzuM.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
make: *** [testpp] Error 1 

このObjective-C++ファイルが、私が探しているフレームワークを見るためには何が必要なのですか?C++を使うことができますか?

ありがとうございます!

答えて

1

これらの3つの機能を宣言するヘッダーには、extern "C"ブロックが含まれていますか?このようなもの?

#ifdef __cplusplus 
extern "C" { 
#endif 

// function declarations here 

#ifdef __cplusplus 
} 
#endif 

ない場合:あなたは、ヘッダファイルに1を追加したり、そのヘッダファイルのあなたの#importの周りに似たラッパーを追加することができます。

+0

ありがとうございました!私は 'extern" C "のものはC++とCとの混合にのみ関係していると仮定しました。 すべてコンパイルされていますので、今すぐテストしなければなりません:) – DuncanBoehle

+0

C++とCをミックスしています。 C++(実際にはObjective-C++)コードからアクセスしようとしています。ライブラリやあなたのコードにObj-Cコードが含まれていても差はありません。 –

関連する問題