Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 19 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok NapísalOffline : 10.05.2013 13:39

Pri kompilácií Karla mi vypisuje vo všetkých funkciách túto "undefined reference to `world' " alebo túto "undefined reference to `karel' " chybu...v súbore karel.h mám zadeklarovné obe takto

typedef struct {
int x;
int y;
int beepers;
Direction direction;
} Robot;


typedef struct {
int width;
int heigth;
int data[MAX_HEIGTH][MAX_WIDTH];
} World;

extern Robot karel;
extern World world;

kde može byť chyba?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 10.05.2013 16:03

Nemáš to správne nalinkované. Ako/v čom to kompiluješ? Zase ten netbeans tvoj nešťastný?







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok Napísal autor témyOffline : 10.05.2013 16:07

robim to v netBeanse..ale malo by to ist na linuxe..projekt sa bude prekladať prekladačom gcc pomocou nasledovných prepínačov: gcc -std=gnu99 -Werror -pedantic


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 10.05.2013 16:40

No ak to máš rozdelené na .h a .c súbory, tak je nejlepšie spraviť si na to Makefile.
Napíš, aké máš súbory.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok Napísal autor témyOffline : 10.05.2013 16:45

celého karla mam rozdeleného na karel.h , karel.c a main.c a tieto tri mam aj odovzdat


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 10.05.2013 17:03

To nie je veľa, tak máš teda dve možnosti:
1.) Postupnosť príkazov cez terminál
Kód:
gcc main.c karel.c -c -std=gnu99 -Werror -pedantic
gcc main.o karel.o -o karel

ti vytvorí binárku s menom karel
Prvý riadok ti vytvorí tzv. object files, druhý ich zlinkuje dokopy (tzn. prvý kompiluje, druhý linkuje)

2.) Do súboru s názvom Makefile napíšeš:
Kód:
all: karel

karel: main.o karel.o
        gcc main.o karel.o -o karel

main.o: main.c
        gcc main.c -c -std=gnu99 -Werror -pedantic

karel.o: karel.c
        gcc karel.c -c -std=gnu99 -Werror -pedantic

A toto v termináli pustíš príkazom make







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok Napísal autor témyOffline : 10.05.2013 17:45

mm počkať takže v kode samotnom nemam meniť nič?? a ono to potom pojde ked odovzdam im len tie tri karel.h, karel.c a main.c lebo aj ked im dam aj ten makefile tak ho spustat abo kontrolovat nebudu... lebo to ide cez program a on kontroluje len tieto tri..


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 10.05.2013 17:47

No to už ja neviem, ako to kontrolujú. Ak si to chceš spustiť, tak takto. Oni toto iste budú tiež robiť.
Skús to a ak to pôjde, všetko je ok.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok Napísal autor témyOffline : 10.05.2013 18:39

skusila som to s tym makefile-om a toto mi vypisuje : Makefile:4: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok Napísal autor témyOffline : 10.05.2013 18:59

a ked skúšam tu prvú možnosť cez terminál, tak píše : No such file or directory asi mu tam chýba karel.o lebo to tam nikde nie je iba to main.o


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 10.05.2013 20:19

V Makefile musí byť na začiatku riadku tabulátor (tam, kde je tá dlhá medzera) Zle som to skopíroval.
A v tom prvom spôsobe by si po vykonaní toho prvého príkazu mala dostať main.o aj karel.o Ak nedostaneš, niekde v tom bude chyba.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok Napísal autor témyOffline : 10.05.2013 21:39

dopisala som do kodu tieto 2 riadky:
Robot karel;
World world;
povodne som ich mala len s subore karel.h ale dala som ich aj do karel.c ... a ked som skusila spustit tak vypisovalo uz len
main.c:(.text+0x7): undefined reference to `turnOn'
main.c:(.text+0xc): undefined reference to `turnOff'
...presne tieto dve funkcie mam v main-e .. je to stale ta ista chyba alebo to je zas niečo ine?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 10.05.2013 21:46

Tak v prvom rade, predstavujem si to tak, že máš v main.c inkludnuté karel.h a v karel.c tiež inkludnuté karel.h
Ak je to tak, určite z .h súborov vyhoď akékoľvek premenné. Tie tam nemajú čo robiť, do .h súborov patria len predpisy (štruktúr, funkcií...)
Ak to robíš tak, ako som napísal, nevidím dôvod na chybu typu "undefined reference to..."







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok Napísal autor témyOffline : 10.05.2013 21:50

/**
* @def MAX_HEIGHT 30
* @brief zadefinovanie maximalne vysky sveta, hodnota 30
*/

#define MAX_HEIGTH 30

/**
* @def MAX_WIDTH 30
* @brief zadefinovanie maximalnej sirky sveta, hodnota 30
*/
#define MAX_WIDTH 30


/**
* @def WALL -1
* @brief zadefinovanie steny vo svete, hodnota -1
*/
#define WALL -1

/**
* @def MAX_HEIGHT 30
* @brief zadefinovanie prazdneho miesta vo svete, hodnota 0
*/
#define EMPTY 0


/**
*@enum Direction
*@brief zadefinovanie enumeracnych typov, svetove strany
*/
typedef enum {
EAST,
NORTH,
WEST,
SOUTH
} Direction;

/**
* @var EAST
*/
/**
* @var NORTH
*/
/**
* @var WEST
*/
/**
* @var SOUTH
*/

/**
*@enum Boolean
*@brief zadefinovanie hodnoty pre pravdu a nepravdu
*/
typedef enum {
false=0,
true=1
} Boolean;

/**
* @var false=0
*/
/**
* @var true=1
*/

/**
* @struct Robot
* @brief zadefinovanie struktury Robot
* @brief definovanie premennych opisujucich robota Karla
*/
typedef struct {
/**
* @var x
*/
/**
* @var y
*/
/**
* @var beepers
*/
/**
* @var direction
*/
int x;
int y;
int beepers;
Direction direction;
} Robot;

/**
* @struct World
* @brief zadefinovanie struktury World
* @brief definovnie premennych opisujucich svet
*/
typedef struct {
/**
* @var heigth
*/
/**
* @var width
*/
/**
* @var data[MAX_HEIGTH][MAX_WIDTH];
*/
int width;
int heigth;
int data[MAX_HEIGTH][MAX_WIDTH];
} World;

extern Robot karel;
extern World world;

void draw(void);
void movek(void);
void turnLeft(void);
void pickBeeper(void);
void putBeeper(void);
void turnOn(void);
void turnOff(void);

Boolean frontIsClear(void);
Boolean frontIsBlocked(void);
Boolean leftIsClear(void);
Boolean leftIsBlocked(void);
Boolean rightIsClear(void);
Boolean rightIsBlocked(void);
Boolean beepersPresent(void);
Boolean noBeepersPresent(void);
Boolean facingNorth(void);
Boolean notFacingNorth(void);
Boolean facingSouth(void);
Boolean notFacingSouth(void);
Boolean facingEast(void);
Boolean notFacingEast(void);
Boolean facingWest(void);
Boolean notFacingWest(void);
Boolean beepersInBag(void);
Boolean noBeepersInBag(void);

takto vyzera moj karel.h


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok Napísal autor témyOffline : 10.05.2013 21:51

a includnute to mam presne tak, ako si napisal... aj v main.c aj v karel.c su kniznice


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 10.05.2013 22:26

externy patria tiež do .c súboru







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok Napísal autor témyOffline : 10.05.2013 22:29

ano mam to tam takto

Robot karel;
World world;

hned pod kniznicami


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 10.05.2013 22:36

extern nie je popis, to je deklarácia premennej. To patrí do .c súboru, nie do .h ako to máš teraz.
Takže tie dva riadky s extern presuň do .c súboru a tie deklarácie karel a world z .c súboru zmaž.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 10.06.14
Príspevky: 41
Témy: 4
Príspevok Napísal autor témyOffline : 10.05.2013 22:44

takze do karel.c dam:

extern Robot karel;
extern World world;

a v karel.h maju ostat alebo ich mam vymazat? lebo podla sablony na stranke ma byt aj v karel.h subore presne toto ze extern Robot karel; a extern World world;


Odpovedať na tému [ Príspevkov: 19 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Robot Karel

v Assembler, C, C++, Pascal, Java

18

2159

29.10.2018 15:43

vaci Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Robot Karel gitlab

v Assembler, C, C++, Pascal, Java

2

741

31.10.2017 13:42

Yami21 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zadanie Karel - trojuholníky

v Assembler, C, C++, Pascal, Java

2

750

17.11.2017 11:13

Vetrolam Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [Lazarus] Fatal: Circular unit reference

v Assembler, C, C++, Pascal, Java

2

328

13.06.2013 22:15

Redpoint1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako zisit kam smeruje reference key?

v Databázy

1

690

25.10.2007 20:43

sento Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. karel v C - nefunguje cyklus

v Assembler, C, C++, Pascal, Java

11

1029

12.05.2010 22:09

Shwollo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Programovanie C v prostredi Karel

v Assembler, C, C++, Pascal, Java

13

2874

29.04.2011 19:15

Niksteven Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Fatal error: Cannot pass parameter 1 by reference

v PHP, ASP

1

360

25.12.2010 11:47

ThePlaky Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. I/P: World of Thanks a World of Warships bonus karty - rôzne

v Predám

1

352

17.03.2018 22:25

Miso122 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Codeblocks a SDL,error undefined reference to 'WinMain@16'

v Assembler, C, C++, Pascal, Java

6

775

20.11.2010 18:32

reDo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Klavecnica - pokazené tlačítka "*" "Fn" "S" "L CTRL"

v Externé zariadenia

9

2853

04.12.2009 12:28

vigoss99 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém - presunutie volneho miesta z "D" na "C"

v Pevné disky a radiče

1

1188

08.03.2012 13:29

majky358 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Stream SW... "MANYCAM" a problémové "MP4FileLibU.dll"

v Video programy

1

689

02.05.2017 20:15

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PS4 "Ghosting" alebo "Motion Blur" na TV

v Herné konzoly

14

1300

10.08.2017 20:17

V1x Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. redukcia "DVI-I duallink" na "VGA"

v Monitory, televízory a projektory

8

1613

27.11.2007 15:30

zajjac Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. <meta name="KEYWORDS" content=" ">

v HTML, XHTML, XML, CSS

1

976

24.04.2009 14:49

lio Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra