Bonjour � tous,
Je doit en ce moment utiliser une biblioth�que d�velopp�e en C, mais mon projet principal est en C++. Je souhaiterais donc faire un petit wrapper C++ de cette biblioth�que et je m'interroge sur la meilleure mani�re de faire.
Elle se nomme libParse et je l'obtiens sous la forme d'un r�pertoire contenant un paquet de header et de fichiers sources. J'ai donc tous les choix possibles, modifier les sources, en faire une dll, en faire une lib statique, l'int�grer directement dans mon projet etc.
Dans un premier temps, j'ai naivement tent� de cr�er un projet C++ organis� comme ceci :
Car apr�s tout le C++ est r�tro-compatible avec le C, right ? (indice : ahahahah)
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 Projet libParseWrapper rep C rep header // header de libParse en C rep source // source de libParse en C rep header // header de mon wrapper CPP rep source // source de mon wrapper CPP
J'ai compil� et ...
Malheureusement, le code C est satur� de chose de ce genre :
qui compile sans probl�me avec VC2005 en mode C (option "Compile as C code"). Par contre en mode C++, la sanction est imm�diate :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 void addTag (char * dst, char * tagname) ; // déclaration //... unsigned char buffer [64]; //... addTag (buffer , "tag");
Alors bien sur, je peux supprimer l'erreur en �crivant :cannot convert parameter 1 from 'unsigned char [64]' to 'char *'
Mais le probl�me, c'est qu'il y a plusieurs centaines d'erreurs du m�me tonneau �parpill�es dans le code
Code : S�lectionner tout - Visualiser dans une fen�tre � part addTag ((char*)buffer, "tag");
Je n'ai pas trouv� le moyen de d�sactiver ce genre d'erreur en C++, rajouter des centaines de cast risque de prendre un temps fou et j'ai un peu peur de me lancer dans une solution � base de dll....
Quelle est selon vous la meilleure mani�re de faire ?
Partager