C++ error LNK2001: unresolved external symbol

mira -  
 Titi -
bonjour tout le monde !

mon programme VisualC++ compile tres bien, mais j'arrive pas à faire le BUILD de l'exe.
il me donne :

DLLExplicit1.obj : error LNK2001: unresolved external symbol _mlfMira
Debug/DLLExplicit1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

est ce qu'il y a quelqu'un qui pourra m'aider ????

MERCI

10 réponses

  1. Kyrool
     
    Juste histoire de donner une info supplémentaire à ceux qui rencontreraient cette erreur, comme cela a été mon cas:
    vérifiez vos déclarations de fonction.
    Je m'explique: j'ai déclaré en tête de programme un prototype sous la forme "void fonction(int, vector<int>, ...)"
    et lorsque j'ai voulu écrire à proprement parler la fonction, j'ai écrit: "void fonction(int &i, vector<int> vec, ...)"
    La seule différence du & pour faire référence à la variable a suffit pour tout faire planter et le compilateur a été incapable de me le dire!
    8
    1. lachoserouge Messages postés 1 Statut Membre
       
      Bonjour,

      Je voudrais ajouter que cette erreur peut subvenir lorsque vous utilisez des références "extern"
      ___________________________
      main.cpp

      //Variable public
      double nDouble ;

      int main()
      {

      }

      ___________________________
      CVotreClasse.cpp

      //Variable public ref extern
      extern double nDouble ; <====== ici il faut être sur de récupérer la même variable que déclarée précédemment.

      bool CVotreClasse::Funcion()
      {
      nDouble = 3.2 ;
      bool return true ;
      }
      0
  2. firejoke Messages postés 20 Statut Membre 12
     
    Ben enfait ce message s'affiche quand le compilo n'arrive pas a faire le lien entre les différents modules de ton programme.
    Regarde si tu a bien les bon .h et tout ce qui s'ensuit

    @+ Mr Jo
    5
  3. pom
     
    si tu as fait des fonctions inline mets les dans un .h et non un .cpp et n'oublie pas de les redéclarer hors de la classe

    pom
    3
  4. nunuxletux
     
    Salut,

    En faite il semblerai que ce soit une erreur qui est levé quand le compilo est dans les choux....
    Pour en savoir un peu plus sur l'erreur il faut déjà voir si dans les "settings" l'option "Microsoft Fondation Classes" est à "Use MFC in a shared DLL" ...
    Après le choix de cette option le compilo a réussit à identidier le problème....(dans mon cas....)

    Si cela peut aider...
    3
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dOob
     
    J'avais le même problème,

    Il s'agissait en fait des librairies (opengl/sdl dans mon cas) qui n'était incluse que dans les propriétés "DEBUG".
    Il m'a suffit de rajouter les dépendances dans les propriétés "ACTIVE" du projet.
    2
    1. Max
       
      Pourriez vous être plus précis sur la configuration, je ne trouve pas où rentrer les librairies..
      Merci.
      0
  7. Mira
     
    en fait, je dois utiliser des fonctions que j'ai faite en Matlab, c'est pour cela , j'ai créé le DLL + .H du programme matlab (ils se cront automatiquement en étant extern dans le .H) , et j'ai appelé une fonction.
    comment je peux alors appeler mes fonctions matlab pour ne pas avoir cet erreur ???
    1
  8. Mira
     
    laa c tres bizarre ce qui m'arrive !

    j'ai en Visual C++ le programme suivant :

    #include <iostream>

    int main(void)
    {
    return 0;
    }

    et il me donne toujours l'erreur :
    LIBCD.lib(wwincrt0.obj) : error LNK2001: unresolved external symbol _wWinMain@16
    Debug/zzz.exe : fatal error LNK1120: 1 unresolved externals

    je ne comprend plus rien !!!!!!

    quelqu'un pourra m'aider ??
    0
    1. pom
       
      Pour appeler des fonctions Matlab à partir du C++ il faut que tu fasses un MEX File. Mais c'est super reloud à faire (et à comprendre surtout).

      Pour ma part, en général je fais mes gros calculs en C++, je sauvegarde sur le disque dur le résultat (à l'aide d'un ofstream) puis je le load en Matlab puis je sauvegarde les résultats sur le disque dur à l'aide de la commande save (de Matlab). J'utilise ainis l'interface graphique de Matalb que je trouve très bien. Mais il est vrai que je ne cesse de jongler mais ca marche en tout cas.

      concernant ton dernier message : j'utilise le c++ sous linux (car je ne trouve pas que Windows soit super au top pour faire de gros calculs.

      1) Je tape int main() et non int main(void).
      2) crée toi un tout nouveau répertoire et refait ton test
      3) n'aurais-tu pas supprimer un fichier ?
      4) Si ton prgm compile, utilise le débugger et affiche toutes les variables


      pom
      0
    2. os_killer
       
      salut

      Pour enlever ton probleme de link avec ta lib ignore l
      0
    3. winy62
       
      Il existe un patch, disponible sur le site Microsoft, pourtant il n'est pas en téléchargement, il faut appeler un numéro de téléphone en 08..... C'est assez inacceptable, non ? voici le lien : https://support.microsoft.com/fr-fr/help/909350
      0
  9. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    On dirait une libc cassée. Moi à ta place j'installerai dev cpp et j'arrêterais de travailler avec visual c++. En plus leur compilateur est un peu bizarre et parfois quand on passe à gcc on a des mauvaises surprises sur ses anciens codes. Or justement dev cpp utilise gcc et en plus c'est gratuit... alors autant en profiter :-)
    http://www.bloodshed.net/

    Bonne chance
    0
    1. pseudo
       
      pour passer à gcc il faut quand même être un peu naze.
      0
    2. nimp
       
      lol
      0
    3. Titi
       
      Re lol
      0
  10. Darth_Krant
     
    Bonjour à toi mira, vérifie bien que ton programme puisse se réaliser dans la fenêtre adaptée. Exemple : utiliser une fonction prévue pour l'exécution d'une fenêtre DOS alors que tu travaille en fenêtre normale...
    0
  11. Canard007 Messages postés 5954 Date d'inscription   Statut Contributeur 216
     
    si tu as fait des fonctions en dessous du main...verifie que tu as bien fait la declaration des prototype avant le main.. ;-)
    -1
    1. damien
       
      Dans ce cas c'est plutot le compilateur qui se ferait entendre.

      En fait il s'agit surement d'une variable declaré extern et qu'il faut bien retrouver qq part.
      A+
      Damien
      0