PB de link Visual C++

Signaler
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004
-
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004
-
Bonjour
j'ai deux erreurs de LINK qui sont :
DLLArmony.obj : error LNK2001: unresolved external symbol "void __stdcall DebugInit(char *)" (?DebugInit@@YGXPAD@Z)

DLLArmony.obj : error LNK2001: unresolved external symbol "void __cdecl debug(char *,...)" (?debug@@YAXPADZZ)

je dois utiliser le debug.h mais des que je rajoute l'include ça me met ces deux erreurs

je suis en Visual C++ 6.0

18 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Il doit manquer un .lib à ajouter au linker (project settings, onglet link, catégorie général, case "object/libary module). le fichier debug.h doit être associé à une lib à rajouter là.
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004

comment je sais kel lib rajouter
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Je sais pas, d'ou il vient ton debug.h ?
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004

bah il est dans le package qui est avec Visual C++
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
t'es sur qu'il vient pas d'une lib externe que tu as ajouté parsque msdn ne connait pas DebugInit et je n'ai pas "debug.h" (sous VC++ 6.0)

sinon quel est le genre du programme.
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004

voila le code de la fonction debug
//
//	ANY new programs should be using the wwDbg.h
//	********************************************
//
//	This is an obsolete include file and is provided only for
//	"backward compatibility"
//
//
#ifndef H__debug
#define H__debug

#include <sys\timeb.h>
typedef struct timeb  TIMESTAMP;
#define WWDBG_MESSAGE	27
#define WWDBG_ID	28
#define WWDBG_ALARM_MSG	29

VOID	FAR PASCAL DebugSetHWnd( HWND );
VOID 	far cdecl  debug( LPSTR, ... );
VOID 	FAR debugAlarm( LPSTR, TIMESTAMP * );
VOID	FAR PASCAL DebugInit( LPSTR );
long 	FAR PASCAL DebugDefWindowProc( HWND, UINT, WPARAM, LPARAM );
BOOL	FAR PASCAL DebugProcessMessage( HWND, UINT, WPARAM, LPARAM );
VOID	FAR PASCAL DebugStartLoggerCheck( LPSTR );
VOID	FAR PASCAL DebugStartLoggerClientCheck( WORD wShowWindow );
HWND	FAR PASCAL GetHWndLogger( void );

#endif

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Apparement il s'agit d'un entête obsolète. Ce que tu peu faire pour savoir quel .lib ajouter c'est de faire une recherche dans l'explorateur windows dans le répertoire lib de VC de tous les fichiers contenant le texte DebugInit. Avec un peu de chance tu le trouvera peut-être.

Comment as-tu eu l'idée d'utiliser cet header ?
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004

j'ai pris le code d'un collegue

mais c'est bon j'ai trouvé
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004

en fait je n'ai pas trouvé
j'ai une lib qui va avec mais quand je la rajout dans les settings ça ne change rien
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
le .lib est-il bien situé dans le répertoire lib de VC ou son path est-il bien spécifié dans les path lib de visual (tools->options->directories, showdirectories for library)
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004

bah la lib est dans le repertoire de mon projet
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
donc a priori le path relatif au .dsp devrait suffir.

tu peut auusi tenter la directive #pragma
#pragma comment(linker, "relpath\nom.lib");
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004

j'ai rajouté

#pragma comment(linker, "relpath\wwDbg.lib");

et j'obtiens

:\ScriptFonction\DLLArmony\DLLArmony\DLLArmony.cpp(26) : warning C4129: 'w' : unrecognized character escape sequence

C:\ScriptFonction\DLLArmony\DLLArmony\DLLArmony.cpp(26) : warning C4081: expected 'newline'; found ';'
Linking...

Creating library Debug/DLLArmony.lib and object Debug/DLLArmony.exp

DLLArmony.obj : error LNK2001: unresolved external symbol "void __stdcall DebugInit(char *)" (?DebugInit@@YGXPAD@Z)
D
LLArmony.obj : error LNK2001: unresolved external symbol "void __cdecl debug(char *,...)" (?debug@@YAXPADZZ)
Debug/DLLArmony.dll : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

DLLArmony.dll - 3 error(s), 2 warning(s)
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
erreurs de ma part.

le point virgule n'est pas à mettrela chaîne est une chaîne C => on double les \\ ou on met / pour les paths.

#pragma comment(linker, "relpath/wwDbg.lib")
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Au fait relpath est à remplacer par le chemin relatif de la lib par rapport au fichier .dsp de ton projet
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004

donc j'ai fais

#pragma comment(linker, "wwDbg.lib")

et j'ai tjs mes deux erreurs de LINK
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
A mon avis il faut utiliser l'entête "wwDbg.h" au lieu de "debug.h" comme dit dans l'entête de "debug.h". Il se peut que les fct que tu utilise soient vraiment très obsolètes et pas incluses dans la nouvelle lib.
Messages postés
31
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
24 novembre 2004

bah oui mais en faites c'est juste un copier coller d'un bout de code et ça fonctionne dans l'autre programme