IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

LIBCMTD.lib(dbgheap.obj) : error LNK2005: _malloc already defined in LIBC.lib


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut LIBCMTD.lib(dbgheap.obj) : error LNK2005: _malloc already defined in LIBC.lib
    Bonjour,

    J'ai repris un gros projet mais je n'arrive pas à le compiler
    -->LIBCMTD.lib(dbgheap.obj) : error LNK2005: _malloc already defined in LIBC.lib(malloc.obj)

    J'ai été dans Project/Settings onglet "Links" category "General" :
    Dans Object/library modules j'avais libcimtd.lib et dans Project Options libcimtd.lib et /nodefaultlib:"libcmt.lib"

    J'ai supprimé ces 2 choses même si c'est pas exactement LIBCMTD.lib
    Mais rien à faire, encore la même erreur.
    Que dois-je faire?

    PS: j'ai cherché sur google et j'ai trouvé 3000 messages avec cette erreur mais rien qui résoud mon problème.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    1. Tu compiles en debug ou en release ?
    2. Spécifier le choix de la lib C run-time (CRT) dans les "Object/library modules", c'est du travail de cochon. Retire-là de là, et retire également celle de nodefaultlib.
      Ensuite, va à l'onglet C/C++, place la combobox sur "Code Generation" et règle le champ "Use run-time library" selon ton choix (multithreaded ou debug multithreaded).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par Médinoc
    Tu compiles en debug ou en release ?
    Debug pour commencer


    Citation Envoyé par Médinoc
    Retire-là de là, et retire également celle de nodefaultlib.
    Ca y est, j'ai retiré tout ça.

    Citation Envoyé par Médinoc
    Ensuite, va à l'onglet C/C++, place la combobox sur "Code Generation" et règle le champ "Use run-time library" selon ton choix (multithreaded ou debug multithreaded).
    C'était déjà à debug multithreaded.

    J'ai relancé, et voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    LIBCMT.lib(towlower.obj) : error LNK2005: _towlower already defined in LIBC.lib(towlower.obj)
    LIBCMT.lib(setlocal.obj) : error LNK2005: _setlocale already defined in LIBC.lib(setlocal.obj)
    LIBCMT.lib(setlocal.obj) : error LNK2005: __expandlocale already defined in LIBC.lib(setlocal.obj)
    LIBCMT.lib(setlocal.obj) : error LNK2005: ___init_dummy already defined in LIBC.lib(setlocal.obj)
    LIBCMT.lib(setlocal.obj) : error LNK2005: __strcats already defined in LIBC.lib(setlocal.obj)
    LIBCMT.lib(setlocal.obj) : error LNK2005: ___lc_strtolc already defined in LIBC.lib(setlocal.obj)
    LIBCMT.lib(setlocal.obj) : error LNK2005: ___lc_lctostr already defined in LIBC.lib(setlocal.obj)
    LIBCMT.lib(_file.obj) : error LNK2005: ___initstdio already defined in LIBC.lib(_file.obj)
    LIBCMT.lib(_file.obj) : error LNK2005: ___endstdio already defined in LIBC.lib(_file.obj)
    LIBCMT.lib(_file.obj) : error LNK2005: __cflush already defined in LIBC.lib(_file.obj)
    LIBCMT.lib(_file.obj) : error LNK2005: __iob already defined in LIBC.lib(_file.obj)
    LIBCMT.lib(close.obj) : error LNK2005: __close already defined in LIBC.lib(close.obj)
    LIBCMT.lib(osfinfo.obj) : error LNK2005: __alloc_osfhnd already defined in LIBC.lib(osfinfo.obj)
    LIBCMT.lib(osfinfo.obj) : error LNK2005: __set_osfhnd already defined in LIBC.lib(osfinfo.obj)
    LIBCMT.lib(osfinfo.obj) : error LNK2005: __free_osfhnd already defined in LIBC.lib(osfinfo.obj)
    LIBCMT.lib(osfinfo.obj) : error LNK2005: __get_osfhandle already defined in LIBC.lib(osfinfo.obj)
    LIBCMT.lib(osfinfo.obj) : error LNK2005: __open_osfhandle already defined in LIBC.lib(osfinfo.obj)
    LIBCD.lib(dbgheap.obj) : error LNK2005: _malloc already defined in LIBC.lib(malloc.obj)
    LIBCD.lib(dbgheap.obj) : error LNK2005: __nh_malloc already defined in LIBC.lib(malloc.obj)
    LIBCD.lib(dbgheap.obj) : error LNK2005: __heap_alloc already defined in LIBC.lib(malloc.obj)
    LIBCD.lib(dbgheap.obj) : error LNK2005: _calloc already defined in LIBC.lib(calloc.obj)
    LIBCD.lib(dbgheap.obj) : error LNK2005: _realloc already defined in LIBC.lib(realloc.obj)
    LIBCD.lib(dbgheap.obj) : error LNK2005: _free already defined in LIBC.lib(free.obj)
    LIBCD.lib(dbgheap.obj) : error LNK2005: __msize already defined in LIBC.lib(msize.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: __get_sbh_threshold already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: __set_sbh_threshold already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: ___sbh_heap_init already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: ___sbh_find_block already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: ___sbh_free_block already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_block already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_region already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_group already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: ___sbh_resize_block already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: ___sbh_heapmin already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: ___sbh_heap_check already defined in LIBC.lib(sbheap.obj)
    LIBCD.lib(sbheap.obj) : error LNK2005: ___sbh_threshold already defined in LIBC.lib(sbheap.obj)

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Je up pour indiquer la fin de la compilation.

    Alors; que faire?

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Il y a un truc qui a ajouté une dépendence à LIBC.LIB (la CRT en Single-Threaded sans débogage) et ce n'est pas normal, puisque le projet est réglé en Debug Multi-Threaded (à moins que tu te sois trompé et que tu n'aies réglé que pour un source au lieu de tout le projet).
    Je te conseille de passer ton projet au peigne fin pour voir où c'est, mais en attendant ça peut peut-être marcher si tu rajoutes /nodefaultlib:"libc.lib"
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par Médinoc
    projet est réglé en Debug Multi-Threaded (à moins que tu te sois trompé et que tu n'aies réglé que pour un source au lieu de tout le projet).]
    Ben je suis dans Project Settings alors c'est pour tout le projet


    Citation Envoyé par Médinoc
    ça peut peut-être marcher si tu rajoutes /nodefaultlib:"libc.lib"
    A rajouter dans l'onglet C/C++ hein (ce que j'ai fait en attendant la réponse)? Pas dans Link.

    J'ai lancé; verdict après le déjeuner! Par contre pour "passer au peigne fin" comme tu dis, encore faudrait-il savoir où chercher. Moi je ne comprend pas grand chose à tout ça.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Par défaut
    aie ouille, en effet, c'est un peu complexe quand tu es pas un pro de VC++.
    j'ai eu exactement le meme probleme, et apres avoir tout mis en multi thread, il s'avere que ca marche.. mais je sais pas pourquoi.

  8. #8
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Par défaut précisions
    Bonjour je déterre le thread vieux d'un an pour apporter des précisions.
    J'ai le même problème et je suis en phase de le régler, il est juste un peu plus épineux puisque l'un de mes modules n'a pas été compilé avec la même version de VST et qu'il est impossible de le compiler avec ma version bref....

    pour les précision.
    Quand on dit qu'il faut que tous les modules soient compilés de la même manière... ça signifie que :
    Dans ton projet tu importes des librairies tierces, c'est dans edition de lien ou link tout ce qui est noté .lib par exemple tu pourrais utiliser un wrapper mysql comme mysql++ ou xerces ou bien QT etc.
    Un module ça signifie que ton projet utilise d'autres projets.

    Il est possible que tu ne vois pas les sources de ces projets dans ta solution.
    Dans ce cas essaie de repèrer quels projets tu utilise et récupère les sources puis recompile les un par un en utilisant soit MT partout soit MD partout

    Ca c'était pour le prochain qui tombe sur le topic en arrivant par google comme moi.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/06/2009, 22h26
  2. Réponses: 6
    Dernier message: 19/02/2009, 15h26
  3. msvcprtd.lib(MSVCP90D.dll) : error LNK2005
    Par PoseurDeQuestion dans le forum Visual C++
    Réponses: 1
    Dernier message: 15/02/2009, 11h51
  4. Réponses: 1
    Dernier message: 21/08/2008, 19h46
  5. Réponses: 2
    Dernier message: 31/10/2005, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo