2011-06-30 28 views
13

Sadece ncurses'ı keşfettim ve yeni öğrendim, ancak öğretici içindeki örnekler bilgisayarımda derleme yapmıyor.Ncurses kullanan C/C++ kodunu derleyemiyor

ncurses'ı elle yüklemek zorunda kaldım ve "apt-get install libncurses5-dev libncursesw5-dev" komutunu girerek yaptım. Bunu yapmak zorundaydım çünkü yapmadan önce "#include" yapamayacağımı söyleyen bir hata aldım. kurduğunuzda

çalıştı, ancak şimdi bunun yerine bu hatayı alıyorum: Böyle

[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 

kod ben derlenmiş görünüyor:

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

    return 0; 
} 

bu hatayı alıyorum neden. Ve daha da önemlisi, bunu nasıl düzeltirim?

cevap

30

ben C için oldukça yeni ncurses'in kütüphane

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

bağlamak zorunda ++ nedenle bu kavram benim için yeni. Derleyicide bulunmayan bir kütüphaneyi kullanırken her zaman bunu yapmak zorunda mıyım? – Touzen

+3

Evet. Başlık dosyası, kodunuzun bir işlev bildirimini kodunuzdaki aramalarla eşleştirerek derlenmesini sağlar. Bağlantının görevi, programınızda kullanılan her işlev için * gerçek çalıştırılabilir kodu * bulmaktır ve bu, bağlantı zamanındaki kapsülleme kitaplığı adını (kendi kodunuzun nesne dosyalarının yanı sıra) belirterek budur. –

+0

Tam olarak - tüm kütüphanelere, hatta standart olanlara bile bağlamanız gerekir. –

İlgili konular