J'ai une bibliothèque C++ qui fournit des différentes classes pour la gestion des données. J'ai le code source de la bibliothèque.
Je veux prolonger la durée de l'API C++ pour support C-les appels de fonction, de sorte que la bibliothèque peut être utilisé avec du code C et C++ code en même temps.
Je suis à l'aide de chaîne d'outils GNU (gcc, glibc, etc), de sorte que la langue et l'architecture de soutien ne sont pas un problème.
Existe-il des raisons à cela est techniquement pas possible?
Y a - gotcha que j'ai besoin de regarder dehors pour?
Existe-il des ressources, des exemples de code et/ou documents disponibles sur ce?
Merci
Mise à JOUR :
Quelques autres choses que j'ai trouvé:
-
Utilisez la commande suivante pour envelopper votre C++ en-têtes qui doivent être utilisés par du code C.
#ifdef __cplusplus
extern "C" {#endif
//
// Code ici ...
//#ifdef __cplusplus
} // extern "C"#endif
Garder le "réel" C++ interfaces de séparer les fichiers d'en-tête qui ne sont pas inclus par C. Pense PIMPL principe ici. À l'aide de
#ifndef __cplusplus #error
aide stuff ici afin de détecter toute folie.- Attention C++ identificateurs de noms dans le code C
- Les énumérations dont la taille varie entre compilateurs C et C++. Probablement pas un problème si vous utilisez GNU outil de la chaîne, mais encore, être prudent.
-
Pour les structures de suivre le formulaire suivant afin que C ne pas confondre.
typedef struct X { ... } X
- Ensuite, utiliser des pointeurs pour passer autour des objets en C++, il suffit juste d'être déclarée en C comme struct X où X est l'objet C++.
Tout cela est grâce à un ami qui est un assistant au C++.