Stránka 1 z 1

Problem s AVR studiem a C

Napsal: 11 čer 2009, 08:28
od chroustek
Ahoj zacinam c WinAVR a AVR Studiem. Mam problem s kompilaci programu ktery pouzije cizi knihovnu. Napr jsem chtel popuzit toto .
http://winavr.scienceprog.com/example-avr-projects/avr-gcc-4-bit-and-8-bit-lcd-library.html
V programu kdyz dam

Kód: Vybrat vše

int main (void) {

LCDinit;
}

tak se to zkompiluje, ale jakmile pokracuju v psani

Kód: Vybrat vše

int main (void) {
LCDinit;
LCDSendChar('A');
}

tak to vyhodi hlasku undefined reference to 'LCDSendChar'

Napsal: 11 čer 2009, 08:40
od hakamusai
Je potřeba si stáhnout z toho webu knihovny lcd_lib
http://winavr.scienceprog.com/download/AVR_LCD.zip

Jinak funkce "LCDSendChar" by měla být vidět -pokud je správně zařazena knihovna lcd_lib do projektu

Napsal: 11 čer 2009, 08:42
od chroustek
ahoj knihovny mam includovane do hlavniho.c souboru. Problem je v tom ze jakmile pouziju fci ktera ma parametr, tak to zarve tu chybu.

Napsal: 11 čer 2009, 08:59
od chroustek
A prosimte jak by melo vypadat to "spravne" zarazeni knihovny do projektu ?, kde vsude krom #include "cesta_k.h" to musi byt nastaveno ?

Napsal: 11 čer 2009, 09:04
od hakamusai
Jestli Ti tu funkci vidí,tak je to pravděpodobně správně.Jak na to koukám v tý knihovně,tak mi připadá,že tam vkládáš špatný parametr - zkus dát jiný,nebo ho přetypovat.

Tohle prostředí nemám nainstalovaný,takže jen odhaduju.Třeba někdo poradí konkrétně.

Napsal: 11 čer 2009, 09:55
od chroustek
tak to zkousim s jinou knihovnou primo z avrlibc a kdy naprikal chci zavolat

Kód: Vybrat vše

 lcdGotoXY(0,0);
(zde by snad nemel byt problem) tak to zase zarve na undefined reference to lcdGotoXY.......... Neco je spatne a ja nevim co :o urcite je to nejaka kravovina ale uz nad tim dumam 2 den, pomozte mi nekdo nebo me z toho klepne ..... [/code]

Napsal: 11 čer 2009, 14:13
od jano80
no ten problem som mal aj ja.
skus namiesto #include "lcd_lib.h"
#include "lcd_lib.c"

Napsal: 12 čer 2009, 09:04
od piitr
Místo

Kód: Vybrat vše

LCDinit;
bys měl psát:

Kód: Vybrat vše

LCDinit();

Ten tvůj zápis znamená: "Vyhodnoť adresu té funkce a pak ji zahoď."
Teprve ty závorky představují samotné zavolání funkce.
Počítám, že pak ti to udělá undefined reference i na to LCDinit.

Vkládat .c místo .h není úplně dobré řešení. Správně se to má dělat tak:
1) Přeložíš tvůj program.c, vznikne program.o.
2) Přeložíš lcd_lib.c, vznikne lcd_lib.o.
3) Pak všechny ty .o slinkuješ dohromady. Tím se právě dohledají ty reference.

Napsal: 15 čer 2009, 08:35
od chroustek
diky za rady, uz to frci ;-)