|
Hola a todos, A ver si me se explicar... :) Estoy creando una librería en MacOSX para acceder a iCal. Tengo el entorno configurado para generar un bundle que se compila correctamente y muestra un mensaje tipo "Hello World". Hasta aquí todo correcto. Es en C++. Ahora quiero incluir el framework Calendar Store para poder crear Eventos y Tareas. CreateNewEventWithCalendar() CreateNewTaskWithCalendar() Como lo incluyo y llamo a las funciones? Es que me genera 100 y pico errores... empezando porqué no encuentra el archivo... :( Alguna ayuda de algun experto :) Salut, Josep
mostrando 5 de 7
mostrar todos
|
|
Hola de nuevo... Estoy probando una cosa que he visto que es crear un .mm y así puedo mezclar en el mismo código C++ y Obj-C, inicialmente para que bien pero al compilar me aparece: 'EXTERNAL_DECLARE_FUNCTION_OBJC' was not declared in this scope Es la declaracion externa de la librería. Tengo que crear un .h para ella? Salut, Josep (es que no me deja ponerlo como comentario) :( Pues sin ver el código dónde sucede el error va a ser difícil de adivinar que está sucediendo. (Sí te ha dejado, pero parece que el software de la página tiene algún fallito y a veces no se actualizan los comentarios como debería. De hecho has puesto 4 o 5 iguales. Te los he eliminado).
(23 Dic '10, 22:59)
YoNoSoyTu
|
|
Hola, Aquí dejo el código pero lo pega raro. El error es: 'EXTERNAL_DECLARE_FUNCTION_OBJC' was not declared in this scope
Salut, Josep :) Es decir, que ese
(24 Dic '10, 10:49)
YoNoSoyTu
Pues eso debe ser el fallo, que no esta definida en ningún lugar. Donde debería definirlo? Salut, Josep
(24 Dic '10, 11:07)
JosepM
Creo que ya se que está pasando.. :) La definición está en #include <revolution external.h=""> pero por lo que sea como está condicionada en un : #if defined(cplusplus) && defined(EXCEPTIONS) . . #if def OBJC . . <aquí está="" la="" definición=""> #endif #endif Como puedo saber que está definido? esto no especifico en algún lado? Salut, Josep
(24 Dic '10, 11:56)
JosepM
Pero ¿por qué has escrito esa macro en tu código si no sabes lo que hace? Para saber si una macro del preprocesador está definida o no, lo mejor es preguntarle, pon antes de tu include algo por este estilo:
Y similar para las demás variables que tienes que comprobar. De todas formas, creo que la que no va a estar definida es
(24 Dic '10, 15:23)
YoNoSoyTu
Como miro los parámetros del Build? Voy perdido, lo sé. :) y gracias por la ayuda que me estás dando.
(24 Dic '10, 16:51)
JosepM
Correcto. __EXCEPTIONS no está definida. Ahora obtengo un error "segmentation fault" :(
(24 Dic '10, 17:13)
JosepM
mostrando 5 de 6
mostrar todos
|
¿Cómo estas compilado? ¿Xcode? ¿Le has puesto en la fase de link el
CalendarStore.framework? (o de alguna forma en las opciones de Build).Con XCode. Leyendo y leyendo he visto que tengo que hacer un "wrapper" que una Cocoa Framework con C++, para que desde este pueda ser llamada la funcion.. :(
Disculpa, no conocia
CalendarStore.framework, creí, por los nombres de las funciones que ponías, que era un framework C/C++. Si el framework es Objective-C, lo más sencillo que puedes hacer es utilizar Objective-C++, que te permite mezclar (más o menos sencillamente) ambos lenguages. Pero la solución del wrapper podría ser factible (y así reducir el código Objective-C++ en tu aplicación a un mínimo).Entonces como puedo hacerlo? Entiendo que debo de relacionar las funciones/métodos de Obj-C con mi .cpp, pero como? Algún ejemplo... estoy leyendo muchas cosas por la red pero no me aclaro.
Yo tengo que llamar a la función de C++ externamente. Esto lo tengo (en teoria) resuelto y se compila correctamente. El siguiente paso es que esta funcion de C++ llama a la de Obj-C. Aquí es donde no se como relacionarlo.
Salut, Josep
Te dejo un gist con un ejemplo de un wrapper de
NSStringen Objective-C++. La extensión.mmle dirá a Xcode que compile como Objetive-C++. Es un poco tedioso de hacer, pero lo más cómodo es hacer un wrapper mínimo, y moverte en un lenguaje u el otro, y que los puntos de interacción sean los menos posibles.Muchas gracias. Lo miro con calma a ver que saco en claro y seguimos comentándolo.
Salut, Josep
Hola de nuevo... Estoy probando una cosa que he visto que es crear un .mm y así puedo mezclar en el mismo código C++ y Obj-C, inicialmente para que bien pero al compilar me aparece:
'EXTERNAL_DECLARE_FUNCTION_OBJC' was not declared in this scope
Es la declaracion externa de la librería. Tengo que crear un .h para ella?
Salut, Josep