Les Allergies
Alimentaires
Posez votre question Signaler

C++ error LNK2001: unresolved external symbol

mira - Dernière réponse le 5 mars 2012 à 17:59
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
Lire la suite 

C++ error LNK2001: unresolved external symbol »

17 réponses
Réponse
+6
moins plus
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
Ajouter un commentaire
Réponse
+6
moins plus
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!
lachoserouge- 6 juil. 2011 à 19:41
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 ;
}
Ajouter un commentaire
Réponse
+3
moins plus
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
Ajouter un commentaire
Réponse
+2
moins plus
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...
Ajouter un commentaire
Réponse
+2
moins plus
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.
Ajouter un commentaire
Réponse
+1
moins plus
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 ???
Ajouter un commentaire
Réponse
+0
moins plus
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 ??
pom - 2 juil. 2004 à 14:33
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
os_killer - 4 oct. 2005 à 15:30
salut

Pour enlever ton probleme de link avec ta lib ignore l
winy62 - 14 déc. 2006 à 10:53
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 : http://support.microsoft.com/kb/909350/fr
Ajouter un commentaire
Réponse
+0
moins plus
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/devcpp.html

Bonne chance
pseudo - 4 sept. 2011 à 10:54
pour passer à gcc il faut quand même être un peu naze.
nimp - 5 mars 2012 à 17:59
lol
Ajouter un commentaire
Réponse
-1
moins plus
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...
Ajouter un commentaire
Réponse
-2
moins plus
si tu as fait des fonctions en dessous du main...verifie que tu as bien fait la declaration des prototype avant le main.. ;-)
damien - 1 juil. 2004 à 17:12
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
Ajouter un commentaire
Ce document intitulé « C++ error LNK2001: unresolved external symbol » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?