Kompileringsfel: "variabel has multiple definitions&quo
Kompileringsfel: "variabel has multiple definitions&quo
När jag kompilerar ett projekt får jag felet: Error - symbol 'dummy' has multiple definitions.
Jag har testat ändra och byta namn på varibeln men får samma fel. Blir helt galen...jag kör C18 med 18f252. Vad beror det på? Har nån tidigare stött på samma problem?
Jag har testat ändra och byta namn på varibeln men får samma fel. Blir helt galen...jag kör C18 med 18f252. Vad beror det på? Har nån tidigare stött på samma problem?
Ok. Jag har zippat hela projektet. Jag har ändrat lite i koden för att komma runt problemet men nu får jag: Error - symbol 'clear_usart_errors_inline' has multiple definitions...alltså samma typfel...jag blir galen....
http://hem.bredband.net/yuspoy/mplab.zip
PS. funktionen finns i serial.c
http://hem.bredband.net/yuspoy/mplab.zip
PS. funktionen finns i serial.c
Nu har jag inte C18 tilgänglig att kolla med, men en sak ser väldigt skum ut:
#include "serial.c"
Man brukar inte inkludera c-filer på det sättet, de ska kompileras var för sig och länkas ihop. Om du gör båda delarna så kommer du att ha två kopior av varje sak från serial.c, (den ena i main.c).
edit: och sen undrar jag varför du använder något som verkar vara gammal kod för PIC16F87x, när C18 har utmärkta inbyggda funktioner för att hantera USART på PIC18...
#include "serial.c"
Man brukar inte inkludera c-filer på det sättet, de ska kompileras var för sig och länkas ihop. Om du gör båda delarna så kommer du att ha två kopior av varje sak från serial.c, (den ena i main.c).
edit: och sen undrar jag varför du använder något som verkar vara gammal kod för PIC16F87x, när C18 har utmärkta inbyggda funktioner för att hantera USART på PIC18...
Det intressanta är (men det vet du väll redan eftersom det framgår av dokumentationen) att detta fel *inte* kommer från C18 kompilatorn, utan från MPLINK.
MPLINK får alltså en "hög" med objekt (*.o) filer där det tydligen finns dubbla definitioner.
Är serial.c också en "source file" i ditt projekt ?
Det skulle förklara felmeddelandet (men "Felet" är #includen).
MPLINK får alltså en "hög" med objekt (*.o) filer där det tydligen finns dubbla definitioner.
Är serial.c också en "source file" i ditt projekt ?
Det skulle förklara felmeddelandet (men "Felet" är #includen).
OK. Nu har jag tagit bort den och endast kompilerat den för sig, och sen länkat den till projektet. Den gick faktiskt genom...så problemet var det.
Men nu säger den : could not find definition of symbol 'CLRWDT' . Kommer ihåg att jag fick det här meddelandet i mina tidigare projekt också. Är det fel på delayerna eller?
PS. Anledningen till varför jag inte använder C18s inbyggda USART bibliotek är att jag vill lära mig hur man gör det manuellt så att säga. Jag har även kikat på "C18 libraries", och det verkar inte krångligt alls att sätta igång allt med "openUSART"...men som sagt först måste jag få igång det här.
Men nu säger den : could not find definition of symbol 'CLRWDT' . Kommer ihåg att jag fick det här meddelandet i mina tidigare projekt också. Är det fel på delayerna eller?
PS. Anledningen till varför jag inte använder C18s inbyggda USART bibliotek är att jag vill lära mig hur man gör det manuellt så att säga. Jag har även kikat på "C18 libraries", och det verkar inte krångligt alls att sätta igång allt med "openUSART"...men som sagt först måste jag få igång det här.
CLRWDT är en instruktion. Konstigt...
Är det något med definition av procesor modell ?
> "Kommer ihåg att jag fick det här meddelandet i mina tidigare projekt också."
Jahaja ! Och... ? Vad gjorde du då ?? Eller fungerade det ändå ? Gjorde du ingenting ?
> " jag vill lära mig hur man gör det manuellt så att säga."
Vill du göra saker manuellt, ska du köra assembler.
Om du kör C, så är det just för att *slippa* gör saker "manuellt" (men kanske inte förstå lika mycket av vad som händer "under the hood", så att säga).
Du får bestämma dig...
> "Jag har även kikat på "C18 libraries", och det verkar inte krångligt alls att sätta igång allt med "openUSART"
Är det inte enklare att göra det då ?
Är det något med definition av procesor modell ?
> "Kommer ihåg att jag fick det här meddelandet i mina tidigare projekt också."
Jahaja ! Och... ? Vad gjorde du då ?? Eller fungerade det ändå ? Gjorde du ingenting ?
> " jag vill lära mig hur man gör det manuellt så att säga."
Vill du göra saker manuellt, ska du köra assembler.
Om du kör C, så är det just för att *slippa* gör saker "manuellt" (men kanske inte förstå lika mycket av vad som händer "under the hood", så att säga).

Du får bestämma dig...

> "Jag har även kikat på "C18 libraries", och det verkar inte krångligt alls att sätta igång allt med "openUSART"
Är det inte enklare att göra det då ?
MPLINK, som jag skrev ett tidigare inlägg...
(Läs tråden !
)
Kolla i manualerna för C18 resp MPLINK, så
hittar du felmeddelandet i MPLINK manualen...
I manualen för C18 saknas det helt.
Det är för övrigt helt logiskt, eftersom det är
länkaren som "översätter" symboliska referenser,
och alltså har anledning att söka efter symbolerna...
/Janne.
(Läs tråden !

Kolla i manualerna för C18 resp MPLINK, så
hittar du felmeddelandet i MPLINK manualen...
I manualen för C18 saknas det helt.
Det är för övrigt helt logiskt, eftersom det är
länkaren som "översätter" symboliska referenser,
och alltså har anledning att söka efter symbolerna...
/Janne.