|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 27 ![]() |
Bonjour,
Je suis confronté à un problème de conflit entre bibliothèques que je ne parviens pas à résoudre: J'ai deux fichiers ".lib" contenant toute une série de fonctions similaires mais comportant également des fonctions distinctes (il faut donc que les deux bibliothèques soient présentes). Néanmoins, lors de la compilation j'obtiens des erreurs pour les fonctions en commun : Code :
libpng.lib(pngerror.obj) : error LNK2005: _png_set_error_fn déjà défini(e) dans DragonFireSDK.lib(pngerror.obj) J'ai vu sur le net que cela pouvait se résoudre en modifiant les paramètres de la bibliothèque runtime (projet -> propriétés -> C/C++ -> génération de code) mais peu importe ce que je mets dans ce champ, les erreurs sont toujours là (juste le nombre d'erreurs qui varie). N'y a t il pas un moyen simple pour faire coexister mes deux bibliothèques sans avoir de conflit pour les fonctions communes ? Je vous remercie. |
|
|
00
|
|
|
#2 |
![]() ![]() Loïc JolyDéveloppeur informatique Inscription : août 2004 Messages : 4 675 ![]() |
Simple, je ne pense pas. Compliqué, probablement un peu plus.
Si tu es certain que les symboles en commun sont bien identiques y compris dans leur implémentation, tu peux utiliser l'option du linker /FORCE:MULTIPLE. Attention, ça a le potentiel de tout faire merder de manière subtile si ce n'est pas le cas. Sinon, une idée pourrait être d'utiliser la bibliothèque A directement, et de créer une DLL qui utilise la bibliothèque B, et n'expose de B que les fonctions supplémentaires. De cette manière, le conflit devrait ne plus exister. |
|
|
10
|
|
|
#3 |
|
Invité régulier
![]() Inscription : octobre 2009 Messages : 27 ![]() |
Merci,
bien que mes erreurs disparaissent, j'ai des exceptions générées lors de l’exécution. Est-ce que cela signifie que les fonctions ne sont pas totalement implémentée de la même façon ? Il semblerait que mes 2 bibliothèques ont défini les mêmes fonctions mais avec un code différent. Donc il faudrait que chaque bibliothèque puisse accéder à sa propre fonction ... mais sans générer de conflit .. ? Je vais essayer de clarifier mon problème: J'utilise une première bibliothèque (OpenCV) composé de plusieurs fichier ".lib" dont un spécifique pour la gestion des fichiers ".png" J'utilise une deuxième bibliothèque qui ne contient qu'un seul ".lib" Les deux bibliothèques utilisent le format d'image ".PNG" pour fonctionner et le conflit intervient aux niveaux des fonctions de gestions des PNG (auxquelles je n'ai pas vraiment accès). Au départ j'utilisais OpenCV avec des bibliothèques dynamique (.DLL), tout fonctionnait sans le moindre problème. J'ai voulu par la suite utiliser des bibliothèques statiques et c'est à ce moment que les conflits sont apparus. Je ne sais pas si cela permet de clarifier la situation. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com