View Full Version : [C]Visual Studio Collegamento di file Sorgenti
Ciao ho il seguente problema sto scrivendo del codice utilizzando Visual studio->linguaggio Progetto Console Win32, ho creato 2 file .c e un header .h, quando compilo il programma mi segnala
Errore 1 error LNK2005: _mostra già definito in Prova.obj
Errore 2 fatal error LNK1169: rilevato uno o più simboli definiti più volte C:\...\Prova.exe
Ho compilato lo stesso codice con Dev C++ e non ho trovato nessun errore. :doh:
Il programma funziona benissimo :help:
tomminno
18-11-2010, 16:48
Suppongo che entrambi i file .c includano lo stesso .h e il .h non abbia nè #pragma once nè #include guard giusto?
Un esempio sciocco:
// Esempio.h
extern int miavariabile;
void mostra();
//a.c
#include <stdio.h>
#include "Esempio.h"
#include "b.c"
int miavariabile;
int main()
{
printf("\t Inserisci valore per la variabile: \n \t");
scanf("%d", &miavariabile);
printf("\t Hai inserito:");
mostra();
return 0;
}
//b.c
#include <stdio.h>
#include "Esempio.h"
void mostra();
void mostra()
{
printf("\t %d \n" , miavariabile);
}
con Dev non mi da nessun problema
tomminno
18-11-2010, 19:59
con Dev non mi da nessun problema
Evidentemente DevC++ha la fama che merita.
Devi aggiungere all'inizio
#pragma once
oppure
#ifndef IDENTIFICATORE_UNIVOCO_PER_L_HEADER
#define IDENTIFICATORE_UNIVOCO_PER_L_HEADER
//Tutto il codice dell'header
#endif
Grazie per l'aiuto,
ho provato ad aggiungere #pragma once al .h
#pragma once
extern int miavariabile;
void mostra();
Però gli errori sussistono
Errore 2 error LNK2005: _mostra già definito in b.obj
Errore 3 fatal error LNK1169: rilevato uno o più simboli definiti più volte
tomminno
19-11-2010, 10:36
Scusa non ci avevo fatto caso: hai ridichiarato mostra nel file b.c.
Ti ringrazio nuovamente per l'aiuto e la pazienza nei miei confronti.
#include <stdio.h>
#include "Esempio.h"
// void mostra();
void mostra()
{
printf("\t %d \n" , miavariabile);
}
Ho provato anche in questo modo ma mi segnala ancora l'errore
tomminno
19-11-2010, 12:53
Aaaargh:
#include "b.c"
Si includono gli header non il codice.
:doh: Grazie per l'aiuto, risolto :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.