Wie man Qt, C++ und Obj-C/Cocoa mischt

 C Programming >> C-Programmierung >  >> Tags >> Qt
Wie man Qt, C++ und Obj-C/Cocoa mischt


Ich habe ein reines C++/Qt-Projekt auf einem Mac, aber jetzt muss ich einige Methoden aufrufen, die nur in der Cocoa-API verfügbar sind. Befolgen Sie die hier aufgeführten Anweisungen:


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


Ich habe eine C++-Klassenimplementierung in einer ".m"-Datei. Als Test enthält meine "foo.m"-Datei den folgenden Code (entsprechend #include Methoden wurden aus Gründen der Übersichtlichkeit entfernt).:


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

Anscheinend muss ich die .m-Datei zu einer qmake-Variable namens OBJECTIVE_SOURCES hinzufügen . Meine Projekt-.pro-Datei sieht so aus:


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

Ich erhalte jedoch die folgende Fehlermeldung, wenn ich versuche, mein Projekt zu kompilieren:


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


Dies zeigt auf die class foo Datei in meiner Header-Datei. Wenn ich alle Kakaoaufrufe aus der .m-Datei entferne und die .m-Datei in die Datei SOURCES verschiebe Abschnitt meiner Qt .pro-Datei funktioniert alles wie erwartet.


Ich verwende Qt 4.6.0.


Meine Frage ist:Was ist der empfohlene Weg, Cocoa-Aufrufe mit Qt / C++ zu integrieren, und was mache ich im obigen Beispiel falsch?


Antworten:


Es kompiliert Ihren .m Datei als Objective-C. Sie möchten, dass es ein .mm ist Datei für Objective-C++.



No