cocoa - Conversión de una aplicación de cacao en un complemento NPAPI con el marco Firebreath
plugins webkit (1)
Recientemente descubrí que el modelo de webkit no será compatible con Apple en la última versión de Lion y Safari y que todo el mundo está migrando al proyecto Firebreath para poder usar NPAPI.
Tengo una aplicación de cacao básica que se vincula con los siguientes frameworks nativos:
- CoreGraphics
- CoreData
- IOKit
- PFEventTaps (este es un marco de 3 partes por: Pfiddlesoft.com)
Nunca he usado PlugIns, así que esto es un poco nuevo para mí, comencé con el tutorial de MAC escrito por Richard Bateman y después de seguir las pautas, terminé con una plantilla de proyecto Firebreath para mi proyecto personal. el siguiente paso que hice fue simplemente poner todas mis clases Objective-C en la carpeta Source Files agregando el enlace con los 4 frameworks, finalmente agregué los nuevos métodos públicos que necesito exponer en el plug-in en MyProjectPluinApi.h por ej. registerMethod ("MyMethod", make_method (this, & WilmerPlugInAPI :: MyMethod));
Cuando construyo el proyecto Firebreath, recibo muchos errores de compilación, uno de ellos muy repetitivo: NSString was not declared in this scope.
El error apunta a NSObjCRuntime.h
Hasta ahora no puedo obtener esta compilación con éxito con XCODE 3.2.6
¿Que esta mal aquí? Necesito cambiar todo mi código para lograr el estilo CPP en este proyecto de plantilla? ¿O puedo vincular mis marcos de alguna manera? ¿Hay alguna muestra que pueda ver?
MÁS DETALLES: 7 de noviembre de 2011: estaba intentando probar con un proyecto simple:
- Primero creo el proyecto testOfFB
- se genera en / users / Me / Firebreath-dev / build / projects / testofFB
- luego modifico la clase testFBApi.cpp y le cambio el nombre a testFBApi.mm.
- Escribí una clase de Objective-c llamada testMath.m y le cambié el nombre a testMath.mm
Añado un método Agregar con la firma:
-(long) Add:(long)a:(long)b:(long)c;
Finalmente modifico el archivo testFBApi.mm con esto:
registerMethod("add", make_method(this, &testFBAPI::add ));
En la implementación del método add, creo una instancia del método de clase objetivo-c "add" para probar la llamada a mi método objetivo-c. Hice los includes y cambié el archivo /Mac/projectDef.cmake de esta manera:
target_link_libraries(${PROJECT_NAME} ${PLUGIN_INTERNAL_DEPS} ${Cocoa.framework} // added line ${Foundation.framework} //added line )
Ejecuto el script prepmac.sh y luego construyo la solución xcode y aparecen los mismos errores más algunos otros como testFBApi no ha sido declarado.
Es difícil decirlo sin un poco más de información, pero puede que necesite actualizar sus archivos de cmake para importar los marcos que necesita; Si lo haces a mano en xcode, probablemente debería funcionar también, pero no lo he intentado de esa manera. Debes saber que agregarlo con cmake no lo agregará a la lista de marcos en xcode, aunque debería estar allí.
Si necesita usar el código object-c y el código c ++ en el mismo archivo, necesitará usar la extensión de archivo .mm (objetivo-c ++) en lugar de la extensión .m (objetivo-c) más común.
Aparte de esto, necesitaría ver más de su código para adivinar lo que podría estar mal con seguridad; Supongo que tal vez te has perdido incluye, por ejemplo. Tenga en cuenta que si tiene una PCH en su proyecto anterior, es muy probable que no se use en el nuevo proyecto.
Para obtener más información sobre cómo agregar los marcos con cmake, consulte http://www.firebreath.org/display/documentation/Using+Libraries.