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]"

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];
    }
}
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"
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
.\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'
Je ne sais pas comment distinguer les 'd�clarations' de la 'd�finition'

J'essaye donc avec de la compilation conditionnelle de d�clarer mes variables et fonctions comme des �l�ments externes
Code : S�lectionner tout - Visualiser dans une fen�tre � part
extern "C" { ... int KarpPartitioning; ... }
A 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
�dition des liens en cours...
AddCandidate.obj : error LNK2005: _KarpPartitioning d�j� d�fini(e) dans Activate.obj
SolveRoheSubproblems.obj : error LNK2019: symbole externe non r�solu _Random r�f�renc� dans la fonction _SolveRoheSubproblems
Lorsque je choisi un module dans lequel ins�rer les d�clarations non externes, je retrouve la premi�re erreur
.\SRC\LKHmain.cpp(5) : error C2086: 'int KarpPartitioning'*: red�finition
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
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 )
Merci de votre aide