-
Link et compilation c++
Bonjour,
Je dois intégrer un objet que j ai crée dans un projet.
Les projets voisins utilisent des librairies différentes des miennes mais utilisant parfois les mêmes nom ou définition. Et donc lorsque le compilateur link le tout. Problème de redéfinition.
J aimerai savoir si il était possible de compiler un objet(projet) sans faire de lien avec les prétendants objets.
Pour faire plus clair, mon projet utilise la lib winsock2 les projets adjacent utilise la lib racknet. Celle-ci fait pas mal de redéfinition de const var etc... moralité je me retrouve avec 1200erreurs de link Oo
Si quelqu un a une petite idee, je lui en serrai gré de m en faire part? :mrgreen:
-
Salut,
Peut-être utilisé les espaces de nommage (namespace) pour éviter les conflits de noms ?
-
Merci de ta réponse mais malheureusement on ne peut utiliser ici les namespaces car ici c est un conflit entre libs.
Voir http://www.open-std.org/jtc1/sc22/wg...1993/N0262.pdf
-
En général, ceci se règle par plusieurs moyens, pas forcément incompatibles entre eux :- Modification de l'ordre d'inclusion des entêtes de librairies : certaines librairies doivent être incluses avant d'autres.
- Définitions de directives de compilation (#defines) permettant à une librairie de s'adapter à la présence d'une autre librairie.
- Isolation de la librairie "fautive" dans une DLL, qui sera linkée "seule", et que l'on interface ensuite vers les autres. Cela isole les conflits dans plusieurs binaires différents.
Après, il serait quand même très étonnant que Racknet ne tolère pas WinSock2, vu que sous Windows, il serait difficile de la faire fonctionner sans WinSock2, justement !!