À l'aide de la bibliothèque C++ dans le code C

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 pour lesquelles c'est techniquement pas possible?

Sont là tout gotcha que j'ai besoin de regarder dehors pour?

Sont là des ressources, des exemples de code et/ou de la documentation disponible au sujet de cette?


Quelques autres choses que j'ai trouvé:

  1. 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 goes here ...  
// 
#ifdef __cplusplus  
} //extern "C"  
#endif
  1. Garder "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.
  2. Prudent de C++ les identificateurs de noms dans le code C
  3. 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.
  4. Pour les structures de suivre le formulaire suivant afin que C ne pas confondre.

    typedef struct X { ... } X
  5. Puis 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, c'est grâce à un ami qui est un assistant au C++.