Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: Code Blocks -> ncurses -> curses.h -> undefined reference to `initscr`  (Przeczytany 11721 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2763
  • 1709
    • Zobacz profil
Chciałbym pouczyć się programować ale mam problem z przykladami curses.

Po zainstalowaniu ncurses juz mi nie woła ze nie moze znalesc takiej bliblioteki ale ...

#include "curses.h"

int main()
{
    initscr(); //1
    printw( "Hello World !!!" ); //2
    getch(); //3
    endwin(); //4
    return 0;
}
Cytuj
-------------- Build: Debug in test (compiler: GNU GCC Compiler)---------------

g++ -L/usr/include/gtk-2.0/gtk -L/usr/include -L/usr/include/ncurses -o bin/Debug/test obj/Debug/main.o  -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype   /usr/include/ncurses.h
obj/Debug/main.o: In function `main':
/home/gg/ProjektyC/test/main.c:6: undefined reference to `initscr'
/home/gg/ProjektyC/test/main.c:7: undefined reference to `printw'
/home/gg/ProjektyC/test/main.c:8: undefined reference to `stdscr'
/home/gg/ProjektyC/test/main.c:8: undefined reference to `wgetch'
/home/gg/ProjektyC/test/main.c:9: undefined reference to `endwin'
collect2: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
6 error(s), 0 warning(s) (0 minute(s), 0 second(s))
system : "fedora 20" - 64bit
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

snajper_8383

  • Gość
Code Blocks -> ncurses -> curses.h -> undefined reference to `initscr`
« Odpowiedź #1 dnia: 2014-05-11, 09:46:04 »
To jest błąd przy linkowaniu. Podaj przy kompilowaniu opcje -lncurses. Zobacz tu:
http://invisible-island.net/ncurses/ncurses-intro.html#compiling

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2763
  • 1709
    • Zobacz profil
Code Blocks -> ncurses -> curses.h -> undefined reference to `initscr`
« Odpowiedź #2 dnia: 2014-05-11, 13:49:20 »
Dziękuję !
W ustawieniach
" Settings "  --> " Compiler... " --> " Global Compiler Settings " --> " Linker Settings " --> " Other linker options " --> dopisałem " -lncurses "
pomogło,
życzę wszystkim mniej takich " kwiatków "  :)
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

snajper_8383

  • Gość
Code Blocks -> ncurses -> curses.h -> undefined reference to `initscr`
« Odpowiedź #3 dnia: 2014-05-11, 14:22:34 »
Mam taką jeszcze uwagę. Nie wiem jak znasz C/C++, ale jeśli uczysz się dopiero, to zaczynanie nauki języka od biblioteki do tworzenie interfejsów nie jest dobrym pomysłem, bo zaraz się spotkasz z takimi rzeczami jak wskaźniki, struktury itp., a dla początkującego jest to trochę trudne przy pierwszym spotkaniu. Więc ja na twoim mijescu uczył bym się na prostych programikach. Dobre są książki Prata (Szkoła Programowania C) do nauki.

ubu59

  • Gość
Code Blocks -> ncurses -> curses.h -> undefined reference to `initscr`
« Odpowiedź #4 dnia: 2014-05-12, 08:39:13 »
Cytat: tele
#include "curses.h"

int main()
{
    initscr(); //1
    printw( "Hello World !!!" ); //2
    getch(); //3
    endwin(); //4
    return 0;
}
Spójrz do kodu źródłowego, do linii oznaczonej //2. W programowaniu musisz bardzo uważać na literówki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3049
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Code Blocks -> ncurses -> curses.h -> undefined reference to `initscr`
« Odpowiedź #5 dnia: 2014-05-12, 23:10:56 »
@ubu59: akurat printw jest poprawną funkcją ncurses...
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

ubu59

  • Gość
Code Blocks -> ncurses -> curses.h -> undefined reference to `initscr`
« Odpowiedź #6 dnia: 2014-05-13, 06:58:20 »
Cytat: pkraszewski
@ubu59: akurat printw jest poprawną funkcją ncurses...
Faktycznie, moja wina!

Jak się zdążyłem już zorientować, przykład pochodzi z 2. lekcji tutoriala Pietrzucha.

Na swoją obronę mam to, iż na forum przestano zwracać uwagę na poprawność językową, a zwłaszcza na literówki (-> Regulamin forum pkt. 3d). Chciałem pokazać, że to również ma znaczenie w programowaniu.

Jeśli ktoś ma z tym kłopot mogę pomóc w zainstalowaniu polskiego słownika do przeglądarki. To nie jest takie trudne, a bardzo ułatwia kontrolę!