Почему проклятия на linux дают мне следующую ошибку?

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

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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

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

(Я совершенно новичок в C++)

Может кто-нибудь сказать мне, как сделать эту ссылку с "-lncurses"?