Подтвердить что ты не робот

Как смешивать Qt, С++ и Obj-C/Cocoa

У меня есть чистый проект С++/Qt на Mac, но теперь я обнаружил, что мне нужно вызвать несколько методов, доступных только в API Cocoa. Ниже приведены следующие инструкции:

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

У меня есть реализация класса С++ в файле .m. В качестве теста мой файл "foo.m" содержит следующий код (для ясности были удалены соответствующие методы #include).:

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

По-видимому, мне нужно добавить файл .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 в моем заголовочном файле. Если я удалю все вызовы Cocoa из файла .m и переместим файл .m в раздел SOURCES моего файла Qt.pro, все будет работать так, как ожидалось.

Я использую Qt 4.6.0.

Мой вопрос: Каков рекомендуемый способ интеграции вызовов Cocoa с Qt/С++, и что я делаю неправильно в приведенном выше примере?

4b9b3361

Ответ 1

Скомпилирует ваш файл .m как Objective-C. Вы хотите, чтобы это был файл .mm для Objective-C ++.