J'ai une application qui dépend d'une pléthore de bibliothèques (ne pouvons-nous pas tous). La plupart de ces bibliothèques sont installées via le gestionnaire de packages. Pour ceux qui ne sont pas, je les ai ré-compilés, mais je reçois toujours la même erreur d'incompatibilité libpng. C'est une erreur car le tampon résultant est vide. Comment savoir quelle bibliothèque est reliée à la nouvelle et quelle bibliothèque est liée à l'ancien? P> exécuté Tous sont 1.2.44. P> Je cours Ubuntu 11.04 x86-64. P > mise à jour: active les navires OpenCV avec leur propre version de libpng qui est 1.4.3 p> p> localiser png.h code> donne Moi un couple de fichiers au niveau du système p>
4 Réponses :
On dirait que votre application relie dynamiquement un fichier de bibliothèque .so code> quelque part autre que l'en-tête que vous utilisez. Vous pouvez
ldd
.so code> votre binaire est en train de choisir, puis saisissez le fichier d'en-tête de ce répertoire (sauf s'il s'agit d'un répertoire système) au lieu de celui que vous utilisez. Vous le feriez en modifiant votre drapeau
-I code> à l'heure de la compilation. Sinon, je pense que vous devrez installer
libpng-1.4.3 code> afin que vous puissiez compiler contre ses en-têtes. P>
Comme indiqué dans votre question, OpenCV fait em> expédié avec sa propre version de libpng, mais vous pouvez choisir d'utiliser la version de libpng installée sur votre système. Vous ne pouvez le faire que lorsque vous construisez OPENCV à partir de la source: Désactivez Build_png lors de l'exécution de la cmake. P>
Mark B l'a déjà expliqué. Maintenant Aggain pour Matteo P>
Votre lieur reprend la première apparition de libpng. qui semble être imbriqué
à OpenCV. Regardez-vous dans votre maquillage et mettez votre version locale -i / usr / include / libpng12 -lpng12 -L -L / usr / local / lib -lopencv_core p>
@DAT CHU - Je suis confronté à votre même problème, car vous avez découvert que OpenCV expédie sa propre version de libpng Que dois-je faire pour compiler correctement mon code? Laquelle des 2 suggestions ci-dessous avez-vous suivi? Merci pour votre aide!