Comment éviter "erreur LNK2005:" (fonctions stdlib déjà définies) lors de la compilation de libpng avec Microsoft Visual Studio '08?
(Pourquoi je suis en train de faire ceci: j'ai pas eu de chance en utilisant le pré-construit binaires pour libpng sur Windows (malgré de nombreuses heures d'essais et d'erreurs), et donc je suis maintenant en essayant de compiler moi-même. J'ai trouvé ce blog utile post à ce sujet, complète avec Microsoft Visual Studio 2008 fichier de projet, mais, malheureusement, n'ont pas encore été en mesure de l'utiliser).
Il compile avec succès lors de la liaison à la zlib binaire trouvé icimais lorsque l'on tente de le lier à un fichier de test j'ai le message suivant:
C:\Documents and Settings\Administrateur\Mes Documents>cl "C:\Documents et Settin gs\Administrateur\Mes Documents\test.c" "C:\Documents and Settings\Administrateur\M y Documents\libpng.lib" -I "C:\Documents and Settings\Administrateur\Mes Documents\include" Microsoft (R) 32 bits en C/C++ Compilateur Optimisant la Version 15.00.30729.01 pour 80x86 Copyright (C) Microsoft Corporation. Tous droits réservés. test.c Microsoft (R) Augmentation De L'Éditeur De Liens Version 9.00.30729.01 Copyright (C) Microsoft Corporation. Tous droits réservés. /out:test.exe test.obj "C:\Documents and Settings\Administrateur\Mes Documents\libpng.lib" MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _abort déjà défini dans LIBCMT.lib( l'abandonner.obj) MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _fread déjà défini dans LIBCMT.lib( fread.obj) MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _malloc déjà défini dans LIBCMT.lib (malloc.obj) MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _free déjà défini dans LIBCMT.lib(f ree.obj) MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: ___iob_func déjà défini dans LIBCMT .lib(_file.obj) LIEN : warning LNK4098: defaultlib 'MSVCRTD conflits avec d'autres libs; u se /NODEFAULTLIB:library test.exe : erreur fatale LNK1169: un ou plusieurs multiplier les symboles définis trouvé
Quelqu'un pourrait-il soin de faire la lumière quant à la façon de corriger ces erreurs?
source d'informationauteur Sam
Vous devez vous connecter pour publier un commentaire.
Le problème est que l'un des deux projets, à l'aide de DLL multithread tandis que l'autre est à l'aide de Multi-thread (sans DLL) dans les Propriétés du Projet -> Propriétés de Configuration -> C/C++ -> génération de Code.
M'est arrivé plusieurs fois.
Assurez-vous de "synchroniser" qui, même pour les versions release, et pour chaque combinaison possible (debug, non debug, etc)