[ 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 | 4

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ý: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 10.05.2013 16:03 | Karel : "undefined reference to `world' "

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 | 4
Napísal autor témyOffline : 10.05.2013 16:07 | Karel : "undefined reference to `world' "

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ý: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 10.05.2013 16:40 | Karel : "undefined reference to `world' "

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 | 4
Napísal autor témyOffline : 10.05.2013 16:45 | Karel : "undefined reference to `world' "

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ý: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 10.05.2013 17:03 | Karel : "undefined reference to `world' "

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 | 4
Napísal autor témyOffline : 10.05.2013 17:45 | Karel : "undefined reference to `world' "

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ý: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 10.05.2013 17:47 | Karel : "undefined reference to `world' "

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 | 4
Napísal autor témyOffline : 10.05.2013 18:39 | Karel : "undefined reference to `world' "

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 | 4
Napísal autor témyOffline : 10.05.2013 18:59 | Karel : "undefined reference to `world' "

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ý: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 10.05.2013 20:19 | Karel : "undefined reference to `world' "

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 | 4
Napísal autor témyOffline : 10.05.2013 21:39 | Karel : "undefined reference to `world' "

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ý: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 10.05.2013 21:46 | Karel : "undefined reference to `world' "

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 | 4
Napísal autor témyOffline : 10.05.2013 21:50 | Karel : "undefined reference to `world' "

/**
* @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 | 4
Napísal autor témyOffline : 10.05.2013 21:51 | Karel : "undefined reference to `world' "

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ý: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 10.05.2013 22:26 | Karel : "undefined reference to `world' "

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 | 4
Napísal autor témyOffline : 10.05.2013 22:29 | Karel : "undefined reference to `world' "

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ý: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 10.05.2013 22:36 | Karel : "undefined reference to `world' "

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 | 4
Napísal autor témyOffline : 10.05.2013 22:44 | Karel : "undefined reference to `world' "

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;


 [ Príspevkov: 19 ] 


Karel : "undefined reference to `world' "



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

1001

29.10.2018 15:43

vaci

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

Robot Karel gitlab

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

2

274

31.10.2017 13:42

Yami21

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

Zadanie Karel - trojuholníky

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

2

352

17.11.2017 11:13

Vetrolam

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

[Lazarus] Fatal: Circular unit reference

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

2

130

13.06.2013 22:15

Redpoint1

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

Ako zisit kam smeruje reference key?

v Databázy

1

550

25.10.2007 20:43

sento

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

Programovanie C v prostredi Karel

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

13

2396

29.04.2011 19:15

Niksteven

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

karel v C - nefunguje cyklus

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

11

779

12.05.2010 22:09

Shwollo

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

90

17.03.2018 22:25

Miso122

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

Fatal error: Cannot pass parameter 1 by reference

v PHP, ASP

1

220

25.12.2010 11:47

ThePlaky

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

631

20.11.2010 18:32

reDo

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

Klavecnica - pokazené tlačítka "*" "Fn" "S" "L CTRL"

v Externé zariadenia

9

2232

04.12.2009 12:28

vigoss99

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

614

08.03.2012 13:29

majky358

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

Stream SW... "MANYCAM" a problémové "MP4FileLibU.dll"

v Video programy

1

132

02.05.2017 20:15

shiro

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

PS4 "Ghosting" alebo "Motion Blur" na TV

v Herné konzoly

14

286

10.08.2017 20:17

V1x

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

1035

27.11.2007 15:30

zajjac

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

router "nejak" blokuje "login" na net

v Siete

5

297

10.11.2011 9:47

martello5



© 2005 - 2018 PCforum, edited by JanoF