2013-03-25 61 views
0

我正在編程一個微控制器。創建我與2010年的VisualStudio和現在的所有代碼,使用相同的代碼與單片機,我得到這個錯誤:再次collect2:ld返回1退出狀態

... 
    ./src/main.o:(.rodata.GPS_latitude+0x0): multiple definition of `GPS_latitude' 
./src/empresa1.o:(.rodata.GPS_latitude+0x0): first defined here 
./src/main.o:(.rodata.GPS_hora+0x0): multiple definition of `GPS_hora' 
./src/empresa1.o:(.rodata.GPS_hora+0x0): first defined here 
./src/gps.o: In function `GPS_PreencheCampos': 
gps.c:(.text.GPS_PreencheCampos+0x4): undefined reference to `GPS_GuardaAnterior' 
./src/main.o: In function `main': 
main.c:(.text.startup.main+0xa0): undefined reference to `GPS_PegaValorLatitude' 
main.c:(.text.startup.main+0xa4): undefined reference to `GPS_PegaLatitudeInt' 
main.c:(.text.startup.main+0xc0): undefined reference to `GPS_PegaValorLongitude' 
main.c:(.text.startup.main+0xc4): undefined reference to `GPS_PegaLongitudeInt' 
main.c:(.text.startup.main+0xf8): undefined reference to `GPS_PegaHoraInt' 
main.c:(.text.startup.main+0x110): undefined reference to `GPS_PegaStatusInt' 
main.c:(.text.startup.main+0x128): undefined reference to `GPS_PegaModoInt' 
main.c:(.text.startup.main+0x140): undefined reference to `GPS_PegaSatelitesInt' 
collect2: ld returned 1 exit status 
make: *** [TFRT_Leandro.axf] Error 1 

最初人們可以看到,也有「多重定義」一些錯誤味精。所有這些消息都是關於.h文件中定義的變量。他們被定義爲GPS_DATA的波紋管所:

struct { 
    char data[7];  // Data no formato ddMMyy\0 
    char hora[7];  // Hora no formato hhmmss\0 
    char latitude[10]; // Latitude no formato ddmm.mmmm\0 
    char longitude[11]; // Longitude no formato dddmm.mmmm\0 
    char velocidade[6]; // Velocidade no formato sss.s\0 
    char curso[6];  // Curso no formato ccc.c\0 
    char satelites[3]; // Número de satélites no formato nn\0 
    char status[2];  // Qualidade do GPS Invalido(0), Valido GNSS fixo(1) ou Valido GNSS fixo diferencial(2) 
    char norteSul[2]; // Direção de latitude (N/S) 
    char lesteOeste[2]; // Direção de longitude (E/W) 
    char modo[2];  // Modo: Sem fixo disponível (1), 2D (2), 3D (3) 
} GPS_Info; 

typedef struct GPS_Dado{ 
    int origem; 
    int posicao; 
    int tamanho; 
    char * pDado; 
}; 

const struct GPS_Dado GPS_hora = {GPS_Tipo_GPRMC, 0, 7, GPS_Info.hora}; 

,我們可以看到的另一件事是,有以功能undefinede引用。我不明白這一點。每個函數都在頭文件中聲明瞭正確的文件main.c.

我希望有人能幫助我解決這個錯誤。 那麼,關於這個疑問的任何其他問題可以隨意詢問評論。

問候

+0

好的,問題解決了。 .c和.h文件中的某些函數簽名是不同的。而且我在.h文件中定義了變量。 – 2013-03-25 21:59:15

回答

1

你不應該在頭文件中定義的變量和常量,只有聲明它們:

extern const struct GPS_Dado GPS_hora; 

然後在執行(.c)文件,定義它:

const struct GPS_Dado GPS_hora = { GPS_Tipo_GPRMC, 0, 7, GPS_Info.hora }; 
相關問題