Domanda

Sto costruendo un'applicazione C ++ e la necessità di utilizzare PDCurses su Windows. Sto compilando con VC ++ da MS VS 2005 e sto ottenendo un errore di collegamento.

 error LNK2019: unresolved external
 symbol __imp__GetKeyState@4 referenced
 in function __get_key_count

Ci sono 11 gli errori, tutte con lo stesso codice di errore e diversi simboli. I simboli mancanti sono __imp__MapVirtualKeyA @ 8, __imp__FindWindowA @ 8, __imp__wsprintfA, __imp__SendMessageA @ 16, __imp__GetWindowThreadProcessId @ 8, __imp__MessageBeep @ 4. E 'quasi come il VC ++ non riesce a trovare le implementazioni ASCII appropriati di queste funzioni. Vorrei anche notare che i programmi dimostrativi che vengono con PDCurses compilati bene, anche se sono programmi C.

Nel programma C ++, includo l'intestazione utilizzando

extern "C" 
{ 
    #include <curses.h> 
}

Sono sicuro che sto dimenticando di collegare contro alcuni libreria standard C, ma non sono sicuro che uno.

È stato utile?

Soluzione

GetKeyState () è una funzione di Windows in "user32.dll", quindi è necessario essere sicuri che stai collegando contro "user32.lib". Potrebbe anche essere necessario per assicurarsi che viene dopo la biblioteca PDCurses nella lista delle librerie linker, anche.

Altri suggerimenti

Lo si costruisce PDCurses sulla vostra macchina - con MS VC ++? Se è così, io non sono sicuro di quello che succede. Se no, allora c'è una buona probabilità che ciò che si sta utilizzando non è compatibile con MS VC ++. Mescolando il codice da diversi compilatori C ++ è carico. Dipende anche un po 'su quello che si intende per' molti altri errori. Se questo è un eufemismo grottesca di 'centinaia di errori', allora questo è probabilmente il problema. Se si dispone di pochi (diciamo un'altra mezza dozzina o meno) errori simili, quindi è meno probabile che sia il problema.

Va bene, ho capito questo;) sto costruendo con scons, mi era compresa user32.lib con un USER32_LIB variabili, che per default è una stringa vuota, tranne sulle finestre dove viene definito a user32.lib. Nella sezione di Windows, ho avuto un errore di battitura, avevo USER32_LIb piuttosto che USER32_LIB.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top