LNK2005 error, * already difined in *.obj [Résolu]

Messages postés
3
Date d'inscription
mercredi 2 mai 2012
Statut
Membre
Dernière intervention
2 mai 2012
- - Dernière réponse : NotoDavid
Messages postés
3
Date d'inscription
mercredi 2 mai 2012
Statut
Membre
Dernière intervention
2 mai 2012
- 2 mai 2012 à 13:19
Bonjour,

Je n'arrive à compiler un projet C (VS2010, W7). Il y a un problème pendant la phase de link.

Voici une version simplifiée du code en quatre fichiers:

definitions.h
typedef int INT32;
const INT32 ELEMENT_SIZE = sizeof(INT32);

main.h
#include "definitions.h"

main.c
#include "main.h"

INT32 myFunction1(INT32 in)
{
return in;
}

file1.c
#include "main.h"
#include "definitions.h"

INT32 myFunction2(INT32 in)
{
return in;
}


Tel quel, j'ai l'erreur :
error LNK2005: _ELEMENT_SIZE already defined in main.obj

Si j'enlève le #include "definitions.h" dans file1.c (ce qui me paraittrait logique au final), il n'arrive pas à définir INT32.

J'avoues être sec...

Quelqu'un à une idée?


Merci d'avance!
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
3
Date d'inscription
mercredi 2 mai 2012
Statut
Membre
Dernière intervention
2 mai 2012
3
Merci
J'ai déclaré la variable ELEMENT_SIZE en static et ça fonctionne...

Désolé...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NotoDavid
Messages postés
3821
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 août 2019
85
0
Merci
Bonjour.

Plusieurs choses (qui ne sont pas en rapport avec le problème soulevé, que tu as apparemment résolu):
1) Pense à utiliser les balises de code. C'est plus agréable de t'aider avec la coloration syntaxique.
2) Si une question trouve sa réponse, alors il faut cliquer sur "réponse accepter" (même si c'est toi qui te réponds, accepte ta propre réponse. Ça permet de regrouper les questions "résolues" et "en attente").
3) Au lieu de renommer par toi même, utilise plutôt <stdint.h> ! Il y a déjà dedans ce que tu essaies de renommer.
Si stdint.h n'est pas disponible avec ta version de Visual, tu peux le trouver ici: http://msinttypes.googlecode.com/svn/trunk/stdint.h

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
Messages postés
3
Date d'inscription
mercredi 2 mai 2012
Statut
Membre
Dernière intervention
2 mai 2012
0
Merci
Ok, bien noté!
Merci de ta réponse

Bonne journée
Commenter la réponse de NotoDavid