2012-11-02 5 views
6

ncursesのlibreriesでいくつかの基本的な例を実行すると、いくつかの問題が発生します。ncursesの基本的な例 - デバッグ時に "端末を開くエラー:不明"

実際には、私は期待していたもの(メッセージが印刷されている)を取得していないし、Eclipseからデバッグに入ると、(コンソール領域で)「端末を開くエラー:不明」

#include <unistd.h> 
#include <stdlib.h> 
#include <ncurses.h> 


int main() { 

    initscr(); 

    move(5,15); 
    printw("%s", "Hello world!"); 
    refresh(); 

    endwin(); 
    exit(EXIT_SUCCESS); 
} 

コンパイラオプション、 "プロジェクトを構築" コマンドでEclipseのコンソールで提供される:

make all 
Building file: ../source/Curses_01.c 
Invoking: GCC C Compiler 
gcc -Incurses -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"source/Curses_01.d"  -MT"source/Curses_01.d" -o"source/Curses_01.o" "../source/Curses_01.c" 
Finished building: ../source/Curses_01.c 

Building target: Curses_01 
Invoking: GCC C Linker 
gcc -o"Curses_01" ./source/Curses_01.o -lcurses 
Finished building target: Curses_01 

おかげで誰もが事前に

はコード従います!

答えて

2

文字列が印刷されます。問題は、プログラムがすぐに終了することです。これで画面が消去され、以前の状態に復元されます。もちろん、これは非常に速く起こるので、あなたは何も見ることができません。

解決方法は、終了する前にキーを押すのを待つことです。あなたはgetch()でこれを行うことができます。

/* ... */ 
refresh(); 
getch(); 
endwin(); 
exit(EXIT_SUCCESS); 

Eclipseの問題は、アプリケーションへのEclipseが提示端末に起因して生じます。 NCursesはそれを認識しません。私はEclipseを使用していないので、これを行う方法を正確にはわかりませんが、xterm、Konsole、Gnome Terminalなどのようにフル・ターミナルでアプリケーションを実行できるような設定を探してください。

+0

こんにちはニコス、実際には、あなたの提案は正しいです!私がEclipse以外で私のアプリを動かすと、それは機能します。 getch()がなければ、私はそれを見ることができませんでした、あなたが悲しいように。また、デバッグ機能を利用するためEclipse内で動作させたいと思っています。答えてくれてありがとう! –

+0

おそらく、ここでncursesでEclipseを使用するための答えを見つけることができます:http://stackoverflow.com/questions/3938291/debugging-ncurses-with-eclipse-cdt –

+0

本当にありがとう! –

関連する問題