Unresolved external... La Loose ultime !

Unresolved external... La Loose ultime ! - C++ - Programmation

Marsh Posté le 13-10-2003 à 11:27:20    

Voilà mon problème.
 
Dans Principal.Cpp j'utilise une fonction OrdreBFPASSAGE qui est définie dans "robot.h" (il y a un #include "robot.h" dans principal) et définie dans blabla.c
 
La compilation se fait mais l'édition de lien me crache :

Code :
  1. Principal.obj : error LNK2001: unresolved external symbol "void __cdecl OrdreBFPASSAGE(int,int,int)" (?OrdreBFPASSAGE@@YAXHHH@Z)


 
Une idée ?

Reply

Marsh Posté le 13-10-2003 à 11:27:20   

Reply

Marsh Posté le 13-10-2003 à 11:43:01    

Tu compile avec quoi?


---------------
Le Tyran
Reply

Marsh Posté le 13-10-2003 à 11:44:09    

Melanger C et CPP je vois pas trop l'idee....
Bref, pour ton probleme, tu te fais ravaler a cause du decorage de fonctions, different en C et en C++
 
Solution : dans robot.h :
 

Code :
  1. extern "C"
  2. {
  3. void OrdreBFPASSAGE(int,int,int);
  4. }


 
et vala


Message édité par chrisbk le 13-10-2003 à 11:44:23
Reply

Marsh Posté le 13-10-2003 à 11:44:38    

LNK2001, c'est visual C++
Kyle >> vérifie si ta fonction OrdreBFPassage() est dans une lib qui est bien liée statiquement au reste de ton projet
 
edit: [:benou_grilled], en plus je pense jamais à la décoration de fonction :/


Message édité par Harkonnen le 13-10-2003 à 11:45:37

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-10-2003 à 11:45:11    

ok merci je vais vérifier tout ça !

Reply

Marsh Posté le 13-10-2003 à 11:46:20    

Harkonnen a écrit :


edit: [:benou_grilled], en plus je pense jamais à la décoration de fonction :/


 
Bah ce probleme, tu te fais avoir une fois apres c'est gravé a vie :D

Reply

Marsh Posté le 13-10-2003 à 11:47:05    

chrisbk a écrit :


 
Bah ce probleme, tu te fais avoir une fois apres c'est gravé a vie :D
 


 
Comme le ; après une classe  :whistle:


---------------
Le Tyran
Reply

Marsh Posté le 13-10-2003 à 11:48:50    

chrisbk a écrit :

Melanger C et CPP je vois pas trop l'idee....
Bref, pour ton probleme, tu te fais ravaler a cause du decorage de fonctions, different en C et en C++
 
Solution : dans robot.h :
 

Code :
  1. extern "C"
  2. {
  3. void OrdreBFPASSAGE(int,int,int);
  4. }


 
et vala


 
Marche tjs pas...

Reply

Marsh Posté le 13-10-2003 à 11:50:45    

redonne la nouvelle erreur de link

Reply

Marsh Posté le 13-10-2003 à 11:52:37    

Toujours la même !
Franchement je vois vraiment pas d'où ça peut venir ...
 
Bien sur quand je commente l'utilisation dans Principal.cpp, tout passe....

Reply

Marsh Posté le 13-10-2003 à 11:52:37   

Reply

Marsh Posté le 13-10-2003 à 11:54:51    

bon, je t'attendais au tournant :D
Si tu as tjs :
 
 

Citation :

Principal.obj : error LNK2001: unresolved external symbol "void __cdecl OrdreBFPASSAGE(int,int,int)" (?OrdreBFPASSAGE@@YAXHHH@Z)


 
c'est que ton extern "C" a pas ete pris en compte
(le bout en gras c'est de la decoration C++, avec extern C elle n'a pas lieu d'etre)
 
T sur que tu redeclares pas la fonction plus loin ?
 

Reply

Marsh Posté le 13-10-2003 à 11:59:09    

Non en fait le extern "c" passe pas, il me crache :  
 

Code :
  1. c:\mes programmes\c++\simulateur\simulateur\robot.h(138) : error C2059: syntax error : 'string'


 
C'est à la ligne avec le extern "C"...
 
en fait je pense qu'on va carrément repenser la structure du projet parceque là c'est pas glop....

Reply

Marsh Posté le 13-10-2003 à 12:00:38    

Ton gros pb, c'est le melange C/C++
(et que tu es avare d'information :D)
Genre la ton erreur, elle se produit quand tu compile le C ou le C++ ?
 
(et c'est C pas c, meme si je suis pas sur que ca change grand chose)

Reply

Marsh Posté le 13-10-2003 à 12:03:32    

non, merci, on en a parlé avec le reste de l'équipe, on va tout passer en C++, ça sera plus propre que le merdier actuel
 
Note : c'est le code de notre robot pour la coupe de France de robotique ("e=m6" ). http://eleves.supaero.fr/club/robotic

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed