¿Es posible tener una API de biblioteca estática C, que utiliza C++ internamente y lo oculta a los usuarios de la biblioteca?Uso de librerías estáticas C/C++ desde iPhone Aplicaciones ObjectiveC
He escrito una biblioteca portátil de C++ Deseo vincular estáticamente a una aplicación de iPhone.
He creado un proyecto de Xcode utilizando la plantilla de "biblioteca estática" de Max OS X, y he copiado la fuente, además de escribir un C wapper (para tratar excepciones) usando (extern "C").
Estoy tratando de usar la biblioteca generada (archivo .a) en otra aplicación de Cocoa iPhone.
Todo funciona bien si utilizo las extensiones (.mm) en el archivo ObjectiveC llamante y (.cpp) en la clase de implementación en la biblioteca.
Pero obtengo símbolos no resueltos al vincular cuando trato de cambiar el archivo del contenedor a una extensión (.c), aunque todos los archivos de la función del contenedor son solo funciones C.
Simplemente porque C++ se usa internamente en una biblioteca, ¿significa que externamente debe tratarse como un programa C++? ¿No hay de todos modos para hacer cumplir esta abstracción?
Editar: Gracias por las respuestas,
que había estado utilizando extern "C", sólo estaba seguro sobre qué configuraciones cuando se requieran en el proyecto llamado. es decir. si el llamado proyectado requeriría saber si usó C++ o podría ser ignorante y pensar que es una biblioteca puramente de C.
Parece que no puedo, y debo usar archivos (.mm) en mis clases de ObjectiveC.
¿Está declarando sus funciones de biblioteca C con extern "C"? –
Akusete, su pregunta realmente no es acerca de Objective-C ... se trata de C/C++ y problemas de herramientas. Creo que su problema es que no está vinculando el soporte de tiempo de ejecución de C++ porque las cosas de Xcode están vinculando una aplicación C. No etiquetes con Obj-C si no hay nada específicamente sobre Obj-C en el Q –
Mi error, no me di cuenta de que lo habías quitado. – Akusete