Qt、C++、および Obj-C/Cocoa を混在させる方法



Mac で純粋な C++/Qt プロジェクトを使用していますが、Cocoa API でのみ使用できるいくつかのメソッドを呼び出す必要があることがわかりました。ここに記載されている手順に従ってください:


http://el-tramo.be/blog/mixing-cocoa-and-qt


「.m」ファイルに C++ クラスの実装があります。テストとして、私の「foo.m」ファイルには次のコードが含まれています (関連する #include メソッドはわかりやすくするために削除されています):


int foo::getMagicNumber()
{
NSCursor *cursor = [NSCursor new];
}

どうやら、.m ファイルを OBJECTIVE_SOURCES という qmake 変数に追加する必要があるようです。 .私のプロジェクト .pro ファイルは次のようになります:


TARGET = testApp
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
OBJECTIVE_SOURCES += foo.m
HEADERS += test.h

ただし、プロジェクトをコンパイルしようとすると、次のエラーが発生します:


foo.h:4expected '=', ',', ';', 'asm' or '__attribute__' before 'foo'


これは class foo を指しています 私のヘッダーファイルのファイル。 .m ファイルからすべての cocoa 呼び出しを削除し、.m ファイルを SOURCES に移動すると、 Qt .pro ファイルのすべてのセクションが期待どおりに機能します。


Qt 4.6.0 を使用しています。


私の質問は次のとおりです:Cocoa 呼び出しを Qt / C++ と統合するための推奨される方法は何ですか? また、上記の例で間違っていることは何ですか?


答え:


.m をコンパイルしています Objective-C としてファイルします。 .mm にしたい Objective-C++ のファイル。



No