Как смешать Qt, C ++ и Obj-C / Какао
У меня есть чистый проект C ++ / Qt на Mac, но теперь я обнаружил, что мне нужно вызвать несколько методов, доступных только в API Какао. Следующие инструкции перечислены здесь:
http://el-tramo.be/blog/mixing-cocoa-and-qt
У меня есть реализация класса C ++ в файле ".m". В качестве теста мой файл "foo.m" содержит следующий код (соответствующий#include
методы были разобраны для наглядности).
int foo::getMagicNumber()
{
NSCursor *cursor = [NSCursor new];
}
Очевидно, мне нужно добавить файл .m в переменную qmakeOBJECTIVE_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 и перемещаю файл .m вSOURCES
В разделе моего файла Qt .pro все работает как положено.
Я использую Qt 4.6.0.
Мой вопрос: каков рекомендуемый способ интеграции вызовов Cocoa с Qt / C ++, и что я делаю неправильно в приведенном выше примере?