C Wrapper pour C ++
J'aimerais l'utiliser Pur de Données comme un outil de prototypage pour ma propre bibliothèque. J'ai trouvé que Pure Data, les patchs sont écrits en C, mais ma bibliothèque est écrite en C++. Alors, comment puis-je utiliser ce code dans pure data? Depuis je n'ai pas utilisé du C, je voudrais savoir comment je pourrais écrire un wrapper C pour les classes C++ et comment instancier mes cours alors? Ou dois-je réécrire tout en C?
source d'informationauteur Pedro
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin d'écrire des fonctions wrapper pour chaque fonction qui doit être appelée. Par exemple:
Noter que ce doit être un code C++. Le
extern "C"
indique que la fonction utilise le C conventions de nommage.Permettez-moi de le dire d'une autre façon:
1) Vous pouvez appeler des fonctions C, les données et les bibliothèques de source C++, et que vous appelez source C++ de C.
2) Chaque fois que C des appels en C++ source, cependant, que la source doit être écrit en C sous-ensemble de C++.
3) c'est en Partie à l'aide de "extern C".
4) une Autre partie est à l'aide de "#ifdef __cplusplus"
5) Les liens que j'ai cité ci-dessus donnent beaucoup de détails
6) j'ai regardé le Pure Data site. Vous pourriez avoir à faire quelques "réglages" de votre bibliothèque. Vous souhaitez peut-être créer un nouvel en-tête. Mais fondamentalement, je pense que vous pouvez probablement atteindre votre objectif de l'obtention de votre bibliothèque à intégrer avec Pure Data.
À mon humble avis...
Vous pouvez également écrire des objets de Pure Data à l'aide de C++ à l'aide de la flext cadre.
Vous pouvez tout à fait appel C de C++ - no problemo!
Pire des cas, vous pourriez avoir à déclarer explicitement les fonctions que vous appelez à partir de Pure Data "extern C". Mais il est quasiment certain que Pure Data a déjà fait pour vous (vous aurez probablement voir "extern C" dans la plus Pure des Données de fichiers d'en-tête.
Voici plus d'infos:
http://msdn.microsoft.com/en-us/library/0603949d%28v=vs.80%29.aspx
'Espère que ça aide!