Erreur error LNK2005 et LNK1169

aerocrazy Messages postés 9 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 28 juillet 2010 - 3 mai 2010 à 00:40
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 9 mai 2010 à 16:26
Bonjour à tous. Recensement, je tente d'écrire une code de gestion de données entre fichiers txt via les listes chaînées. Je compile le code,il n'y a pas d'erreur, mais lors de l'exécution, il y a des problèmes (LNK2005 et LNK1169) que je n'arrive pas à résoudre malgré mes recherches sur google. Voici le code et le rapport d'erreur:

----------------------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <stdlib.h>

struct VARIABLES
{
    char nom[50];
    long double tMass;
    int np,sp,verts,i11,i12;
    long double comx,comy,comz;
    long double minx,miny,minz,maxx,maxy,maxz;
    long double x1,y1,z1;
    long double vx1,vy1,vz1;
long double sx1,sy1,sz1;
long double col1,M1,R1,MMM,integer;
long double ri2,rj2,comri,comrj,ri;
long double idotj,magi,magj,max_theta,theta_ij;
int outer_indexes,outer_parts;   
    
    //Liste chaînée
    struct VARIABLES *Pointeur_suivant; //Pointe sur l'élément suivant
}var;
  
struct VARIABLES *liste = NULL;
struct VARIABLES *nouvelElt=NULL;

void chargement(struct VARIABLES *listechainee)
{
     puts("Saisir le nom du fichier");
     scanf("%s",var.nom);
     printf("Le fichier est:\n%s",var.nom);  

     FILE *fichier_in;
     fichier_in=fopen(var.nom,"r");
     
     if(fichier_in == NULL)
     {
        printf("\nLe fichier ne s'est pas ouvert!\n");
     }     
     else
     {
         printf("\nLe fichier %s est bien ouvert!",var.nom);
         printf("\nLecture du fichier en cour...");
         
        while
        (
            fscanf(fichier_in,"%d %d %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf",
&var.i11,&var.i12,&var.M1,&var.R1,&var.x1,&var.y1,&var.z1,&var.vx1,
&var.vy1,&var.vz1,&var.sx1,&var.sy1,&var.col1,&var.integer)	!=	EOF
        )
        	{            
                nouvelElt = (struct VARIABLES*)malloc(sizeof(struct VARIABLES));
                          
                fscanf(fichier_in,"%d %d %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf",
    &nouvelElt->i11,&nouvelElt->i12,&nouvelElt->M1,&nouvelElt->R1,&nouvelElt->x1,&nouvelElt->y1,&nouvelElt->z1,&nouvelElt->vx1,
    &nouvelElt->vy1,&nouvelElt->vz1,&nouvelElt->sx1,&nouvelElt->sy1,&nouvelElt->col1,&nouvelElt->integer);          
                                                                                                                             
            	var.comx += nouvelElt->M1*nouvelElt->x1;
            	var.comy += nouvelElt->M1*nouvelElt->y1;
            	var.comz += nouvelElt->M1*nouvelElt->z1;
            	var.tMass += nouvelElt->M1; 
            	
            	nouvelElt->Pointeur_suivant = listechainee;

         }
         free(nouvelElt);
     }
     fclose(fichier_in);
}


int main()
{                 
    chargement(liste);
    getch();
}







Le rapport d'erreur de visual c++ 2008:

1>Compilation en cours...
1>main.cpp
1>c:\users\christophe\documents\visual studio 2008\projects\travaux\travaux\main.cpp(31) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306) : voir la déclaration de 'scanf'
1>c:\users\christophe\documents\visual studio 2008\projects\travaux\travaux\main.cpp(35) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(237) : voir la déclaration de 'fopen'
1>c:\users\christophe\documents\visual studio 2008\projects\travaux\travaux\main.cpp(51) : warning C4996: 'fscanf': This function or variable may be unsafe. Consider using fscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(256) : voir la déclaration de 'fscanf'
1>c:\users\christophe\documents\visual studio 2008\projects\travaux\travaux\main.cpp(57) : warning C4996: 'fscanf': This function or variable may be unsafe. Consider using fscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(256) : voir la déclaration de 'fscanf'
1>c:\users\christophe\documents\visual studio 2008\projects\travaux\travaux\main.cpp(76) : warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\conio.h(145) : voir la déclaration de 'getch'
1>Édition des liens en cours...
1>main2.obj : error LNK2005: "void __cdecl chargement(struct VARIABLES *)" (?chargement@@YAXPAUVARIABLES@@@Z) déjà défini(e) dans main.obj
1>main2.obj : error LNK2005: "struct VARIABLES var" (?var@@3UVARIABLES@@A) déjà défini(e) dans main.obj
1>C:\Users\christophe\Documents\Visual Studio 2008\Projects\travaux\Debug\travaux.exe : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\christophe\Documents\Visual Studio 2008\Projects\travaux\travaux\Debug\BuildLog.htm"
1>travaux - 3 erreur(s), 5 avertissement(s)
======== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========



Auriez-vous une idée?

Merci beaucoup. Cordialement.

1 réponse

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
9 mai 2010 à 16:26
Salut,

Tout le début, ce n'est que des warnings très explicites. Il semble que tu compiles en C++ .NET ou avec les warning CLR (.NET) activés et que le compilo considère donc que tu utilises des fonctions unsafe (Non saine, potentiellement dangereuse).

Il faut que tu fasses un vrai projet C++ (Win32) ou que tu désactives ces warnings qui peuvent t'en cacher d'autres.

Le getch n'est pas standard et doit être évité. Mettre une pause à la fin des applications console ce n'est en fait pas une bonne idée. Utilises plutôt un point d'arrêt.

Pour l'erreur de link, il semble que tu ais deux fichiers dans ton projet : main et main2, et qu'ils exportent tout les deux la même fonction chargement.
0
Rejoignez-nous