Почему ругательства на Linux дают мне следующую ошибку? - PullRequest
10 голосов
/ 03 октября 2009

Попытка заставить getch () работать, чтобы захватить нажатие клавиши.

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

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

выдает мне следующую ошибку: -

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

1 Ответ

16 голосов
/ 03 октября 2009

Это ошибка связи. Правильно ли вы ссылаетесь на библиотеку curses?

Существует два этапа использования библиотеки в C.

  1. Вы #include соответствующие заголовочные файлы из ваших исходных файлов. Это значит, что ваш код знает, что представляют собой сигнатуры библиотечных функций. Итак, вы делаете это правильно.
  2. При компиляции кода необходимо указать компоновщику, чтобы он связался с соответствующими библиотеками, чтобы он мог найти определение этих функций. Это то, что вы не делаете . Предполагая, что вы используете gcc, добавьте -lncurses к строке компиляции. Вот объяснение связи .
...