11

キーの押下をキャプチャするためにgetch()を機能させようとしています。

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

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

次のエラーが発生します:-

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

2 に答える 2

19

これはリンクエラーです。cursesライブラリに正しくリンクしていますか?

Cでライブラリを使用するには2つのステップがあります。

  1. #includeソースファイルからの関連するヘッダーファイル。これは、コードがライブラリ関数のシグネチャが何であるかを認識できるようにするためです。だからあなたはこれを正しくやっています。
  2. コードをコンパイルするときは、関連するライブラリにリンクするようにリンカに指示する必要があります。これにより、リンカはそれらの関数の定義を見つけることができます。 これはあなたがしていないことです。gccを使用していると仮定すると-lncurses、コンパイル行に追加することでそれを実行できます。リンクの説明は次のとおりです。
于 2009-10-03T10:29:11.630 に答える
0

上記の答えは正しいですが、形式は次のとおりです。

gcc -Wall program.c -o name_of_binary -lncurses

私がしたとき:

gcc -Wall -lncurses program.c...

それはうまくいかなかったので、どうやらそれは最後に取り組むべきです。

于 2020-07-02T18:25:56.757 に答える