Stránka: 1 z 1
| [ Príspevkov: 19 ] | |
Autor | Správa |
---|
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?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
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! |
|
Registrovaný: 06.05.13 Prihlásený: 10.06.14 Príspevky: 41 Témy: 4 | 4 |
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
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
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! |
|
Registrovaný: 06.05.13 Prihlásený: 10.06.14 Príspevky: 41 Témy: 4 | 4 |
celého karla mam rozdeleného na karel.h , karel.c a main.c a tieto tri mam aj odovzdat
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
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! |
|
Registrovaný: 06.05.13 Prihlásený: 10.06.14 Príspevky: 41 Témy: 4 | 4 |
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..
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
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! |
|
Registrovaný: 06.05.13 Prihlásený: 10.06.14 Príspevky: 41 Témy: 4 | 4 |
skusila som to s tym makefile-om a toto mi vypisuje : Makefile:4: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.
|
|
Registrovaný: 06.05.13 Prihlásený: 10.06.14 Príspevky: 41 Témy: 4 | 4 |
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
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
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! |
|
Registrovaný: 06.05.13 Prihlásený: 10.06.14 Príspevky: 41 Témy: 4 | 4 |
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?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
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! |
|
Registrovaný: 06.05.13 Prihlásený: 10.06.14 Príspevky: 41 Témy: 4 | 4 |
/** * @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
|
|
Registrovaný: 06.05.13 Prihlásený: 10.06.14 Príspevky: 41 Témy: 4 | 4 |
a includnute to mam presne tak, ako si napisal... aj v main.c aj v karel.c su kniznice
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
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! |
|
Registrovaný: 06.05.13 Prihlásený: 10.06.14 Príspevky: 41 Témy: 4 | 4 |
ano mam to tam takto
Robot karel; World world;
hned pod kniznicami
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
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! |
|
Registrovaný: 06.05.13 Prihlásený: 10.06.14 Príspevky: 41 Témy: 4 | 4 |
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;
|
|
Stránka: 1 z 1
| [ Príspevkov: 19 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 18 | 2242 | 29.10.2018 15:43 vaci | | v Assembler, C, C++, Pascal, Java | 2 | 797 | 31.10.2017 13:42 Yami21 | | v Assembler, C, C++, Pascal, Java | 2 | 800 | 17.11.2017 11:13 Vetrolam | | v Assembler, C, C++, Pascal, Java | 2 | 377 | 13.06.2013 22:15 Redpoint1 | | v Databázy | 1 | 725 | 25.10.2007 20:43 sento | | v Assembler, C, C++, Pascal, Java | 13 | 2922 | 29.04.2011 19:15 Niksteven | | v Assembler, C, C++, Pascal, Java | 11 | 1065 | 12.05.2010 22:09 Shwollo | | v PHP, ASP | 1 | 397 | 25.12.2010 11:47 ThePlaky | | v Predám | 1 | 390 | 17.03.2018 22:25 Miso122 | | v Assembler, C, C++, Pascal, Java | 6 | 809 | 20.11.2010 18:32 reDo | | v Externé zariadenia | 9 | 2949 | 04.12.2009 12:28 vigoss99 | | v Pevné disky a radiče | 1 | 1251 | 08.03.2012 13:29 majky358 | | v Video programy | 1 | 746 | 02.05.2017 20:15 shiro | | v Herné konzoly | 14 | 1404 | 10.08.2017 20:17 V1x | | v Monitory, televízory a projektory | 8 | 1687 | 27.11.2007 15:30 zajjac | | v HTML, XHTML, XML, CSS | 1 | 1039 | 24.04.2009 14:49 lio |
|