2011-06-30 10 views
13

que acaba de descubrir ncurses y acaba de comenzar el aprendizaje que, sin embargo los ejemplos en mi tutorial no se compilan en mi equipo.No es capaz de compilar C/C++ código que está usando ncurses

tuve que instalar manualmente ncurses y también lo hizo mediante la introducción de "apt-get install libncurses5-dev libncursesw5-dev". Tuve que hacer esto porque antes de hacerlo, recibí un error al decir que no podía "#incluir".

Instalación funcionó, pero ahora me sale este error en su lugar:

[email protected]:~/learning_ncurses$ g++ -o hello_world hello_world.cpp 
/tmp/ccubZbvK.o: In function `main': 
hello_world.cpp:(.text+0xa): undefined reference to `initscr' 
hello_world.cpp:(.text+0x16): undefined reference to `printw' 
hello_world.cpp:(.text+0x1b): undefined reference to `refresh' 
hello_world.cpp:(.text+0x20): undefined reference to `stdscr' 
hello_world.cpp:(.text+0x28): undefined reference to `wgetch' 
hello_world.cpp:(.text+0x2d): undefined reference to `endwin' 
collect2: ld returned 1 exit status 

El código compilado I es similar al siguiente:

#include <ncurses.h> 
int main(){ 
    initscr(); 
    printw("Hai thar world..."); 
    refresh(); 
    getch(); 
    endwin(); 

    return 0; 
} 

¿Por qué aparece este error. Y aún más importante, ¿cómo puedo arreglar esto?

Respuesta

30

tiene que vincular la biblioteca ncurses

g++ -o hello_world hello_world.cpp -lncurses 
+0

estoy bastante nuevo en C++ por lo que este concepto es nuevo para mí. ¿Siempre tengo que hacer esto cuando uso una biblioteca no incluida en el compilador? – Touzen

+3

Sí. El archivo de encabezado le permite compilar su código al hacer coincidir una declaración de función con las llamadas en su código. El trabajo del enlazador es encontrar el * código ejecutable real * para cada función utilizada en su programa, y ​​eso es especificando el nombre de la biblioteca encapsulante en tiempo de enlace (así como los archivos de objeto para su propio código). –

+0

Exactamente: necesita vincular todas las bibliotecas, incluso las estándar. –

Cuestiones relacionadas