bonjour,
Je rencontre un probl�me qui est trivial mais j'en perds mon latin informatique avec VisualStudio
Je reprends un vieux projet C trouv� sur LKH
et essaye de l'int�grer dans une solution VisualStudio Express 2008
La compilation et l'execution du projet en version d'execution "release" fonctionne
Lorsque je parametre un projet en version de d�boggage "debug", le programme plante � la premi�re utilisation de la variable r�cup�r�e dans la ligne de commande "argv[1]"
Pour tenter de comprendre en utilisant le deboggueur, je d�cide donc de passer en C++ en changeant simplement les extensions des codes sources de ".c" en ".cpp"
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 int main(int argc, char *argv[]) { if (argc >= 2){ ParameterFileName = argv[1]; } }
L�, les choses se compliquent :
Tous les modules utilisent le m�me fichier de d�claration avec la directive du pr�processeur #include car toutes les variables et toutes les fonctions sont d�clar�es de mani�re globale
A la compilation du deuxi�me module, le compilateur C++ me dit que les variables sont d�ja d�finies dans le premier module et ainsi de suite pour toutes les variables globales de tous les modules
Code : S�lectionner tout - Visualiser dans une fen�tre � part #include "LKH.h"
Je ne sais pas comment distinguer les 'd�clarations' de la 'd�finition'.\SRC\LKHmain.cpp(5) : error C2086: 'int KarpPartitioning'*: red�finition
c:\calc_vdc\linkernighan\lkhwin-2.0.3\src\LKHmain.h(264)*: voir la d�claration de 'KarpPartitioning'
J'essaye donc avec de la compilation conditionnelle de d�clarer mes variables et fonctions comme des �l�ments externesA l'�dition des liens, j'ai le message d'erreur d'une variable qui est d�j� d�finie ou qui est r�f�renc�e ailleurs
Code : S�lectionner tout - Visualiser dans une fen�tre � part extern "C" { ... int KarpPartitioning; ... }
�dition des liens en cours...
AddCandidate.obj : error LNK2005: _KarpPartitioning d�j� d�fini(e) dans Activate.objLorsque je choisi un module dans lequel ins�rer les d�clarations non externes, je retrouve la premi�re erreurSolveRoheSubproblems.obj : error LNK2019: symbole externe non r�solu _Random r�f�renc� dans la fonction _SolveRoheSubproblems
Donc, je ne comprends pas ce m�lange de d�claration et de d�finition, entre le C et le C++ et entre les modules.\SRC\LKHmain.cpp(5) : error C2086: 'int KarpPartitioning'*: red�finition
Moi qui pensait que l'on pouvait r�p�ter autant de d�clarations que voulues c'est � dire autant de fois que de modules dans le projet
Et que la d�finition d'une variable se faisait � son initialisation, a savoir dans le main dans ce cas de figure
J'ai beau relire mes bibles, je n'en retrouve pas mon latin (je vais �couter du Brassens pour compenser
Code : S�lectionner tout - Visualiser dans une fen�tre � part KarpPartitioning = 0;
)
Merci de votre aide
Partager