2016-03-29 5 views
0

Одно из моих приложений не может загрузить системную библиотеку на единственном компьютере. LoadLibraryEx возвращает 0 и GetLastError возвращает 87 (параметр неправильный).Ошибка LoadLibraryEx 87 (параметр неправильный)

Это может вызвать такую ​​ошибку и как ее отладить?

Ошибка появляется только на одной машине, принадлежащей моему клиенту (сервер 2008R2). Libarary находится в папке system32. Вот код:

HMODULE lib = LoadLibraryEx(L"authui.dll", NULL, 
          LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_SEARCH_SYSTEM32); 
if (lib == NULL) 
{ 
    DWORD err=GetLastError(); 
    Log(L"error id: ", err); 
    throw; 
} 

Я не могу воспроизвести ошибку на моей копии 2008R2 и понятия не имеют, что может привести к ошибке. Мое приложение написано на VS2015 C++ (чистая WinApi, без MFC или сторонних библиотек), и это 64-разрядная версия.

+2

Вы прочитали, что говорит msdn об использовании ** LOAD_LIBRARY_SEARCH_SYSTEM32 **? Кажется, что вам нужно установить какой-то патч. См. [LoadLibraryEx] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179 (v = vs.85) .aspx) doc. – Joel

+0

О, я думал, что прочитал документ, но, похоже, я этого не сделал. Будет проверять его с клиентом как можно скорее. Спасибо. –

+1

Почему вы не используете абсолютный путь? –

ответ

0

Joel был прав. Проблема заключается в обновлении KB2533623, которое не было установлено на проблемной машине. Я изменил свой код, чтобы использовать абсолютный путь, как рекомендуется David Heffernan, и теперь он отлично работает.

Смежные вопросы