Pregunta

Estoy construyendo una aplicación C ++ y la necesidad de utilizar PDCurses en Windows. Estoy compilando con VC ++ desde MS VS 2005 y me estoy poniendo un error de enlace.

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

Hay 11 errores, todas con el mismo código de error y diferentes símbolos. Los símbolos que faltan son __imp__MapVirtualKeyA @ 8, __imp__FindWindowA @ 8, __imp__wsprintfA, __imp__SendMessageA @ 16, __imp__GetWindowThreadProcessId @ 8, __imp__MessageBeep @ 4. Es casi como el VC ++ no puede encontrar las implementaciones ASCII apropiados de estas funciones. También debo señalar que los programas de demostración que vienen con PDCurses compilados bien, a pesar de que son los programas en C.

En el programa C ++, incluyo la cabecera utilizando

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

Estoy seguro de que estoy olvidando a enlazar con alguna biblioteca estándar de C, pero no estoy seguro de cuál.

¿Fue útil?

Solución

GetKeyState () es una función de Windows en "user32.dll", por lo que necesita para asegurarse de que está ligado con "User32.lib". También puede ser necesario para asegurarse de que se produce después de la biblioteca PDCurses en la lista de bibliotecas de engarce, también.

Otros consejos

¿Construyeron PDCurses en su máquina - con MS VC ++? Si es así, no estoy seguro de lo que pasa. Si no es así, entonces hay una buena posibilidad de que lo que está utilizando no es compatible con MS VC ++. Mezcla de código de diferentes compiladores C ++ está cargada. También depende un poco de lo que entendemos por "varios otros errores. Si eso es un eufemismo para grotesca 'cientos de errores', entonces eso es probablemente el problema. Si usted tiene sólo unos pocos (por ejemplo otra media docena o menos) errores similares, entonces es menos probable que sea el problema.

De acuerdo, me di cuenta de esto;) Estoy construyendo con scons, me incluyo User32.lib con un USER32_LIB variables, que por defecto es una cadena vacía, excepto en las ventanas donde se define a User32.lib. En la sección de ventanas, que tenía un error tipográfico, que había USER32_LIb en lugar de USER32_LIB.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top