13

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 ファイルを .m という qmake 変数に追加する必要があるようですOBJECTIVE_SOURCES。私のプロジェクト .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 ファイルをSOURCESQt .pro ファイルのセクションに移動すると、すべてが期待どおりに機能します。

Qt 4.6.0 を使用しています。

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

4

1 に答える 1

18

.mファイルを Objective-C としてコンパイルしています。.mmObjective-C++ 用のファイルにする必要があります。

于 2010-03-01T10:19:18.750 に答える