Ĺadny brzuch
Oto program:
#include<stdio.h>
#include<iostream.h>
#include<unistd.h>
#include<ncurses.h>
int main()
{
char *tab[]={"abc","abcdef","bcdwklj","sdkjaderf",NULL};
// wypisz(tab,2,1);
initscr();
while(getch() != 11 )
{
int a=getch();
cout << a<<endl;
}
endwin();
}
A oto błędy :
g++ lista.c
/tmp/ccD7inmZ.o(.text+0xc2): In function `main':
: undefined reference to `initscr'
/tmp/ccD7inmZ.o(.text+0xcb): In function `main':
: undefined reference to `stdscr'
/tmp/ccD7inmZ.o(.text+0xd0): In function `main':
: undefined reference to `wgetch'
/tmp/ccD7inmZ.o(.text+0xe3): In function `main':
: undefined reference to `stdscr'
/tmp/ccD7inmZ.o(.text+0xe8): In function `main':
: undefined reference to `wgetch'
/tmp/ccD7inmZ.o(.text+0x119): In function `main':
: undefined reference to `endwin'
collect2: ld returned 1 exit status
...Co wy na to ? Wygląda jakby nie widział biblioteki curses.h , lecz ona tam jest...
System to oczywiście Red Hat Linux 9.0
#include<ncurses.h>
Dodałeś nagłówek o ile się nie myle są tam deklaracje funkcji
potrzeba jeszcze przy linkowaniu dodać odpowiednią biblioteke statyczną z ciałami funkcji :cheesy:
Programista nie wielbłąd wypić musi :D
...hmmm dodałem ncurses.h , ale chyba nie w tym rzecz bo wyskakuje to samo ,:
#include<curses.h>
#include<ncurses.h>
main()
{
initscr();
endwin();
}
dobrze , już wszystko jasne . Można dodać curses.h || ncurses.h .
ale trzeba recznie je zlinkować dzieki ERA , z początku nie zajarzyłem.
hmm zacznijmy od tego czy ty wiesz aby co to jest biblioteka statyczna
:roll:
ncurses.h jak się domyślam zawiera ino deklaracje funkcji
a biblioteka statyczna zawiera te funkcje w wersji już skompilowanej
więc
ld -o prog.bin mojprog.o ncurses.o [nie pamiętam dokładnie parametrów linkera :cheesy:]
o ile wogóle ta biblioteka nazywa się ncurses.o
Programista nie wielbłąd wypić musi :D
gcc plik.c -lncurses -o costam
parametr -l dolacza biblioteke, w tym przypadku plik libncurses.o
(biblioteki kompilatora gcc musza miec przedrostek lib)
_______________________________________________________________________
Zajrzyj na http://hno.freeshell.org - artykuły, tipsy, soft, programowanie, Linux i inne.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
#include<stdio.h>
#include<iostream.h>
#include<unistd.h>
#include<ncurses.h>
int main()
{
char *tab[]={"abc","abcdef","bcdwklj","sdkjaderf",NULL};
// wypisz(tab,2,1);
initscr();
while(getch() != 11 )
{
int a=getch();
cout << a<<endl;
}
endwin();
}
A oto błędy :
g++ lista.c
/tmp/ccD7inmZ.o(.text+0xc2): In function `main':
: undefined reference to `initscr'
/tmp/ccD7inmZ.o(.text+0xcb): In function `main':
: undefined reference to `stdscr'
/tmp/ccD7inmZ.o(.text+0xd0): In function `main':
: undefined reference to `wgetch'
/tmp/ccD7inmZ.o(.text+0xe3): In function `main':
: undefined reference to `stdscr'
/tmp/ccD7inmZ.o(.text+0xe8): In function `main':
: undefined reference to `wgetch'
/tmp/ccD7inmZ.o(.text+0x119): In function `main':
: undefined reference to `endwin'
collect2: ld returned 1 exit status
...Co wy na to ? Wygląda jakby nie widział biblioteki curses.h , lecz ona tam jest...
System to oczywiście Red Hat Linux 9.0
#include<ncurses.h>
Dodałeś nagłówek o ile się nie myle są tam deklaracje funkcji
potrzeba jeszcze przy linkowaniu dodać odpowiednią biblioteke statyczną z ciałami funkcji :cheesy:
Programista nie wielbłąd wypić musi :D
...hmmm dodałem ncurses.h , ale chyba nie w tym rzecz bo wyskakuje to samo ,:
#include<curses.h>
#include<ncurses.h>
main()
{
initscr();
endwin();
}
dobrze , już wszystko jasne . Można dodać curses.h || ncurses.h .
ale trzeba recznie je zlinkować dzieki ERA , z początku nie zajarzyłem.
hmm zacznijmy od tego czy ty wiesz aby co to jest biblioteka statyczna
:roll:
ncurses.h jak się domyślam zawiera ino deklaracje funkcji
a biblioteka statyczna zawiera te funkcje w wersji już skompilowanej
więc
ld -o prog.bin mojprog.o ncurses.o [nie pamiętam dokładnie parametrów linkera :cheesy:]
o ile wogóle ta biblioteka nazywa się ncurses.o
Programista nie wielbłąd wypić musi :D
gcc plik.c -lncurses -o costam
parametr -l dolacza biblioteke, w tym przypadku plik libncurses.o
(biblioteki kompilatora gcc musza miec przedrostek lib)
_______________________________________________________________________
Zajrzyj na http://hno.freeshell.org - artykuły, tipsy, soft, programowanie, Linux i inne.