Вопрос

Я создаю приложение на C ++, и мне нужно использовать PDCurses в Windows.Я компилирую с VC ++ из MS VS 2005, и я получаю ошибку ссылки.

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

Существует 11 ошибок, все с одним и тем же кодом ошибки и разными символами.Недостающими символами являются __imp__MapVirtualKeyA@8, __imp__FindWindowA@8, __imp__wsprintfA, __imp__SendMessageA@16, __imp__GetWindowThreadProcessId@8, __imp__MessageBeep@4.Это почти похоже на то, что VC ++ не может найти подходящие реализации этих функций в формате ASCII.Я должен также отметить, что демонстрационные программы, поставляемые с PDCurses, скомпилированы нормально, хотя это программы на языке Си.

В программе C ++ я включаю заголовок, используя

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

Я уверен, что забываю связать с какой-нибудь стандартной библиотекой C, но я не уверен, с какой именно.

Это было полезно?

Решение

GetKeyState() - это функция Windows в "user32.dll", поэтому вам нужно быть уверенным, что вы ссылаетесь на "user32.lib".Возможно, вам также потребуется убедиться, что он также находится после библиотеки PDCurses в списке библиотек компоновщика.

Другие советы

Вы создавали PDCurses на своем компьютере - с помощью MS VC ++?Если да, то я не уверен, в чем дело.Если нет, то есть приличная вероятность того, что то, что вы используете, несовместимо с MS VC ++.Смешивание кода из разных компиляторов C ++ чревато.Это также немного зависит от того, что вы подразумеваете под "несколькими другими ошибками".Если это гротескное преуменьшение для "сотен ошибок", то, скорее всего, в этом и заключается проблема.Если у вас всего несколько (скажем, еще полдюжины или меньше) подобных ошибок, то вероятность возникновения проблем меньше.

Ладно, я разобрался с этим ;) Я создаю с помощью scons, я включал user32.lib с переменной USER32_LIB, который по умолчанию использует пустую строку , за исключением Windows, где она определяется в user32.lib.В разделе Windows у меня была опечатка, у меня было USER32_LIb вместо того , чтобы USER32_LIB.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top