Cómo mezclar Qt, C++ y Obj-C/Cocoa

 C Programming >> Programación C >  >> Tags >> Qt
Cómo mezclar Qt, C++ y Obj-C/Cocoa


Tengo un proyecto C++/Qt puro en una Mac, pero ahora descubro que necesito llamar a algunos métodos que solo están disponibles en la API de Cocoa. Siguiendo las instrucciones enumeradas aquí:


http://el-tramo.be/blog/mezclando-cacao-y-qt


Tengo una implementación de clase C++ en un archivo ".m". Como prueba, mi archivo "foo.m" contiene el siguiente código (#include relevante los métodos se han eliminado para mayor claridad).:


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

Aparentemente, necesito agregar el archivo .m a una variable qmake llamada OBJECTIVE_SOURCES . El archivo .pro de mi proyecto se ve así:


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

Sin embargo, recibo el siguiente error cada vez que intento compilar mi proyecto:


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


Esto apunta al class foo archivo en mi archivo de encabezado. Si elimino todas las llamadas cocoa del archivo .m y muevo el archivo .m a SOURCES sección 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 las llamadas de Cocoa con Qt/C++ y qué estoy haciendo mal en el ejemplo anterior?


Respuestas:


Está compilando tu .m archivo como Objective-C. Quieres que sea un .mm archivo para Objective-C++.



No