2009-10-03 9 views
10

Cercando di ottenere getch() che lavora per acquisire la pressione dei tasti.Perché curses su linux mi sta dando un errore?

#include <curses.h> 
    ... 
    ... 
    WINDOW *w; 
    char f; 

    w = initscr(); 
    timeout(3000); 
    f = getch(); 
    endwin(); 

mi sta dando seguente errore: -

undefined reference to `wgetch' 
undefined reference to `stdscr' 

risposta

16

Questo è un errore di collegamento. Stai collegando correttamente la libreria curses?

Ci sono due passaggi necessari per utilizzare una libreria in C.

  1. Voi #include i file header rilevanti dai file di origine. Questo è così il tuo codice sa quali sono le firme delle funzioni della libreria. Quindi lo stai facendo correttamente.
  2. Durante la compilazione del codice, è necessario indicare al linker di collegarsi alle librerie pertinenti, in modo che possa trovare la definizione di tali funzioni. Questo è quello che non stai facendo. Supponendo che stai usando gcc allora aggiungendo -lncurses alla riga di compilazione dovresti farlo. Ecco uno explanation of linking.
+1

sì ho incluso curses.h e ncurses.h anche –

+8

link per maledizioni utilizzando -lncurses opzione –

+0

FWIW, nel novembre 2017, è meglio usare 'pkg-config', vedere [questo] (https://stackoverflow.com/a/47060434/841108) risponde a una domanda molto simile. –

Problemi correlati