2012-11-02 67 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

真的,再次感谢! –

相关问题