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

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
lachoserouge Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
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
firejoke Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Max
 
Pourriez vous être plus précis sur la configuration, je ne trouve pas où rentrer les librairies..
Merci.
0
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
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
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
os_killer
 
salut

Pour enlever ton probleme de link avec ta lib ignore l
0
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
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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
pseudo
 
pour passer à gcc il faut quand même être un peu naze.
0
nimp
 
lol
0
Titi
 
Re lol
0
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
Canard007 Messages postés 5931 Date d'inscription   Statut Contributeur Dernière intervention   215
 
si tu as fait des fonctions en dessous du main...verifie que tu as bien fait la declaration des prototype avant le main.. ;-)
-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