Ошибка «Не удается найти импорт» при запуске программы в Windows XP, которая использует ChangeWindowMessageFilter - PullRequest
0 голосов
/ 24 июля 2011

У меня есть программа, которая отлично работает в Windows 7 / Vista, но выдает ошибку при запуске в Windows XP.Раньше он работал, но я добавил функцию, которая в Windows 7 требовала функцию ChangeWindowMessageFilter.Windows XP выдает ошибку

«Не удается найти импорт; DLL может отсутствовать, повреждена или неверная версия. Файл« USER32.dll », функция« ChangeWindowMessageFilter »(ошибка 0)»

Странно то, что у меня есть эта функция, окруженная оператором if, который гарантирует, что версия ОС Vista или выше, так что она даже не вызывается.Все же есть ошибка.Как это происходит?

Что здесь происходит?

Ответы [ 2 ]

1 голос
/ 21 июня 2014

Звучит так, как будто вы делаете статическое связывание вместо динамического связывания.

Попробуйте вместо этого:

В заголовочном файле:

typedef BOOL (WINAPI *PFN_CHANGEWINDOWMESSAGEFILTER) (UINT, DWORD);

В файле C / CPP:

PFN_CHANGEWINDOWMESSAGEFILTER pfnChangeWindowMessageFilter = (PFN_CHANGEWINDOWMESSAGEFILTER) GetProcAddress (hModule, "ChangeWindowMessageFilter");

if (pfnChangeWindowMessageFilter) { /* Do the stuff */ }
1 голос
...