Tengo un proyecto puro de C++/Qt en una Mac, pero ahora encuentro que necesito llamar a algunos métodos solo disponibles en la API de Cocoa. Siguiendo las instrucciones que figuran aquí:Cómo mezclar Qt, C++ y Obj-C/Cocoa
http://el-tramo.be/blog/mixing-cocoa-and-qt
Tengo una aplicación de clase C++ en un fichero ".m". Como prueba, mi archivo "foo.m" contiene (#include
métodos pertinentes han sido despojados por claridad) el siguiente código .:
int foo::getMagicNumber()
{
NSCursor *cursor = [NSCursor new];
}
Al parecer, tengo que añadir el archivo .m a una variable llamada qmake OBJECTIVE_SOURCES
. Mi archivo .pro proyecto es el siguiente:
TARGET = testApp
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
OBJECTIVE_SOURCES += foo.m
HEADERS += test.h
Sin embargo, me sale el siguiente error cada vez que intento y compilar mi proyecto:
foo.h:4expected '=', ',', ';', 'asm' or '__attribute__' before 'foo'
Esto está apuntando a la class foo
archivo en mi cabecera archivo. Si elimino todas las llamadas de cacao del archivo .m y muevo el archivo .m a la sección SOURCES
de mi archivo Qt .pro todo funciona como se esperaba.
Estoy usando Qt 4.6.0.
Mi pregunta es: ¿Cuál es la forma recomendada de integrar llamadas Cocoa con Qt/C++, y qué estoy haciendo mal en el ejemplo anterior?
Doh! El problema fue que el archivo ".m" en realidad debería ser ".mm": una vez que se ha cambiado, todo funciona perfectamente. – Thomi