А кто ругается? компилер или линкер?
Если линкер, то нужно собирать с библиоткой curses:
g++ ... -lcurses
или
g++ ... -lncurses
Пример программы:
/* curses C++ example
*/
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <curses.h>
#define PROMPT_STRING "press ESC to exit or any key to view key code> "
void main (int argc, char** argv)
{
initscr (); // инициализация curses(обязательно)
cbreak (); // обрабатывать клавиши сразу по нажатию
noecho (); // не отображать вводимые символы
nonl (); //
keypad (stdscr, TRUE); // интерпретировать нажание на клавишу Fx, как ввод одного символа, иначе ввод будет выглядеть как символ ESC, за которым следует другой символ
meta (stdscr, TRUE); // перевод терминала в 8-битный режим
clear (); // очистка экрана
int ch = 0;
char str [256];
do
{
if (ch > 0)
{
if (ch <= ' ' || (ch > 'Z' && ch > 'z'))
sprintf (str, " symbol is BLANK or SPEC, code is (%d) ", ch);
else
sprintf (str, " symbol is '%c', code is (%d) ", ch, ch);
move (LINES / 2 + 2, (COLS - strlen (str)) / 2);
addstr (str); // запись строки в текущую позицию
}
move (LINES - 1, 0); // установка текущей позиции
addstr (PROMPT_STRING);
} while ((ch = getch ()) != 27);
endwin ();
exit (0);
}