2012-11-02 27 views
6

thực hiện một số ví dụ cơ bản về ncurses libreries, tôi nhận được một số vấn đề.ncurses ví dụ cơ bản - trong gỡ lỗi tôi nhận được: "Lỗi mở terminal: unknown."

Thực ra, tôi không nhận được những gì tôi mong đợi (tin nhắn được in), và gỡ lỗi, từ nhật thực, tôi nhận được (trong vùng điều khiển) "Lỗi mở terminal: unknown".

Làm theo mã:

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


int main() { 

    initscr(); 

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

    endwin(); 
    exit(EXIT_SUCCESS); 
} 

tùy chọn biên dịch, theo quy định tại Eclipse console tại "Xây dựng dự án" lệnh:

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 

Cảm ơn tất cả mọi người trước!

Trả lời

2

Bạn nhận được chuỗi được in. Vấn đề là chương trình thoát ngay lập tức. Thao tác này sẽ xóa màn hình và khôi phục màn hình về trạng thái trước đó. Điều này xảy ra rất nhanh, tất nhiên, vì vậy bạn không thấy gì cả.

Giải pháp là chờ một lần nhấn phím trước khi thoát. Bạn có thể làm điều này với getch():

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

Vấn đề Eclipse phát sinh do thiết bị đầu cuối do Eclipse trình bày cho ứng dụng. NCurses không nhận ra nó. Tôi không sử dụng Eclipse, vì vậy tôi không biết chính xác làm thế nào để làm điều này, nhưng bạn nên tìm kiếm một số thiết lập cho phép bạn chạy ứng dụng bên trong một thiết bị đầu cuối đầy đủ (như trong xterm, Konsole, Gnome Terminal, vv)

+0

Xin chào Nikos, thực sự, đề xuất của bạn là đúng! Nếu tôi chạy ứng dụng của tôi bên ngoài nhật thực, nó hoạt động. Nếu không có một getch() tôi đã không thể nhìn thấy nó, như bạn buồn. Hơn nữa, tôi muốn làm cho nó hoạt động bên trong Eclipse để có được cơ sở gỡ lỗi. Cảm ơn một lần nữa cho câu trả lời! –

+0

Có lẽ bạn có thể tìm thấy một số câu trả lời cho việc sử dụng Eclipse với ncurses tại đây: http://stackoverflow.com/questions/3938291/debugging-ncurses-with-eclipse-cdt –

+0

thực sự, cảm ơn một lần nữa! –