Est-il possible d'avoir une API de bibliothèque statique en C, qui utilise le C++ en interne et de le cacher aux utilisateurs de la bibliothèque ?
J'ai écrit une bibliothèque C++ portable que je souhaite lier statiquement à une application iPhone.
J'ai créé un projet Xcode en utilisant le modèle de "bibliothèque statique" de Max OS X, et j'ai copié la source à travers, ainsi que l'écriture d'un wapper C (pour gérer les exceptions) en utilisant (extern "C").
J'essaie d'utiliser la bibliothèque générée (fichier .a) dans une autre application Cocoa pour iPhone.
Tout fonctionne bien si j'utilise des extensions (.mm) sur le fichier ObjectiveC appelant et (.cpp) sur la classe d'implémentation dans la bibliothèque.
Mais j'obtiens des symboles non résolus lors de l'établissement de liens lorsque j'essaie de transformer le fichier d'emballage en une extension (.c), même si tous les fichiers de fonctions d'emballage sont uniquement des fonctions C.
Le fait que le C++ soit utilisé en interne dans une bibliothèque signifie-t-il qu'en externe, elle doit toujours être traitée comme un programme C++ ? N'y a-t-il pas moyen d'imposer cette abstraction ?
Editar: Merci pour les réponses,
J'avais utilisé extern "C", mais je n'étais pas sûr des configurations nécessaires dans le projet appelant. Par exemple, si le projet appelant avait besoin de savoir s'il utilisait C++ ou pouvait être ignorant et penser qu'il s'agissait d'une bibliothèque purement C.
Il semblerait que je ne puisse pas, et que je doive utiliser des fichiers (.mm) sur mes classes ObjectiveC.