2012-11-02 70 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()做到這一點:由於Eclipse中呈現給應用程序的終端

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

Eclipse的問題出現了。 NCurses無法識別它。我不使用Eclipse,所以我不知道如何做到這一點,但是您應該搜索一些允許您在完整終端中運行應用程序的設置(如xterm,Konsole,Gnome Terminal等)

+0

嗨尼科斯,其實,你的建議是正確的!如果我在eclipse外部運行我的應用程序,它會起作用。沒有getch(),我無法看到它,因爲你難過。此外,我想讓它在Eclipse內部工作以獲得調試設施。再次感謝您的回答! –

+0

也許你可以在這裏找到一些使用Eclipse與ncurses的答案:http://stackoverflow.com/questions/3938291/debugging-ncurses-with-eclipse-cdt –

+0

真的,再次感謝! –

相關問題