Frage

Ich baue eine C ++ Anwendung und müssen PDCurses unter Windows verwenden. Ich bin mit VC ++ von MS VS 2005 kompiliert und ich einen Link Fehler.

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

Es gibt 11 Fehler alle mit dem gleichen Fehlercode und verschiedenen Symbolen. Die fehlenden Symbole sind __imp__MapVirtualKeyA @ 8, __imp__FindWindowA @ 8, __imp__wsprintfA, __imp__SendMessageA @ 16, __imp__GetWindowThreadProcessId @ 8, __imp__MessageBeep @ 4. Es ist fast wie die VC ++ nicht über die entsprechenden ASCII-Implementierungen dieser Funktionen finden können. Ich sollte auch beachten, dass die Demo-Programme, die mit PDCurses kommen fein zusammengestellt, obwohl sie C-Programme sind.

In dem C ++ Programm, schließe ich den Header mit

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

Ich bin sicher, dass ich gegen eine C-Standardbibliothek zu verknüpfen bin zu vergessen, aber ich bin mir nicht sicher, welche.

War es hilfreich?

Lösung

GetKeyState () ist eine Windows-Funktion in "user32.dll", so müssen Sie sicher sein, Sie eine Verknüpfung gegen "user32.lib". Sie können auch sicherstellen müssen, dass es in der Liste der Linker-Bibliotheken nach der PDCurses Bibliothek kommt auch.

Andere Tipps

Haben Sie bauen PDCurses auf Ihrem Rechner - mit MS VC ++? Wenn ja, ich bin nicht sicher, was los ist. Wenn nicht, dann gibt es eine gute Chance, dass das, was Sie verwenden, um mit MS VC ist nicht kompatibel ++. Misch Code aus verschiedenen C ++ Compiler ist voll. Es hängt auch ein wenig auf das, was Sie durch ‚mehrere Fehler‘ bedeuten. Wenn das eine groteske Untertreibung ist für ‚Hunderte von Fehlern‘, dann ist das wahrscheinlich das Problem. Wenn Sie nur ein paar (sagen wir ein weiteres halbes Dutzend oder weniger) ähnliche Fehler haben, dann ist es weniger wahrscheinlich, dass das Problem sein.

Okay, ich dachte, dies aus;) Ich baue mit scons, ich war mit user32.lib mit einem variablen USER32_LIB, die standardmäßig auf eine leere Zeichenfolge, außer an den Fenstern, wo es definiert wird user32.lib. Im Fenster Abschnitt hatte ich einen Tippfehler, ich hatte USER32_LIb statt USER32_LIB.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top