Ошибка LoadLibrary на 32-битной Win7, успешно на 32-битной Win XP - PullRequest
0 голосов
/ 18 мая 2011

Я пытаюсь загрузить стороннюю dll (т.е. у меня нет исходного кода) в мое приложение.В 32-битной системе Windows XP он загружается нормально, но в системе Windows 7 он не загружается, ссылаясь на ошибку № 998 от GetLastError ()

Я использовал средство просмотра экспорта dll для просмотра импортированных и экспортированных символовиз dll, и заметил, что все, кроме 3 dll, перечисленные в таблице импорта, были получены от этого стороннего поставщика.Те, которые не были:
kernel32.dll
mingwm10.dll
msvcrt.dll

Вот код, который я использую для импорта:

SetDllDirectory(L"c:\\dlls");
HMODULE tempDLL = LoadLibrary(L"mydll.dll");
DWORD err = GetLastError();

Любые советы о том, как отладить это, пожалуйста?

Редактировать: Спасибо всем за ответы, и вот что я обнаружил до сих пор:
a) Пакет инструментария приложенияоказалось не очень полезным (см. ниже)
b) Коллега A может получить dll для загрузки на своей машине win 7, а коллега B не может, так что это что-то спорадическое
c) Запуск с правами администратора ничего не изменил

Ответы [ 2 ]

5 голосов
/ 18 мая 2011

Попробуйте использовать Microsoft Application Compatibility Toolkit (это бесплатный набор инструментов), чтобы выяснить, почему он не работает в Windows 7. Надеюсь, это поможет, похоже, проблема совместимости.

1 голос
/ 19 мая 2011

Вы пробовали с Предотвращение выполнения данных (DEP) отключено?

Обычно это включено по умолчанию в Vista и выше, но отключено в XP.Если в вашей DLL есть ошибка, приводящая к выполнению данных, она может появиться во время вызова LoadLibrary.

...