2017-02-20 12 views
0

Я хочу загрузить DLL из подпапки в моей папке приложения. Так что я положил my.dll со всеми зависимыми DLLs к /моя_папкаНе удалось загрузитьLibrary из подпапки в WindowsXP

Я берет меня некоторое время, чтобы выяснить, как правильно загрузить его:

m_handle = LoadLibraryEx(".\\myfolder\\my.dll", 0, LOAD_WITH_ALTERED_SEARCH_PATH); 

Это очень хорошо работает на Windows 7 & и позже. Однако он возвращает ошибку 998 ERROR_NOACCESS «Недопустимый доступ к ячейке памяти». В Windows XP.

Однако загрузке DLL из папки приложения очень хорошо работает на всех версиях Windows,

PS: Я пытался использовать SetDllDirectory с absoulte и относительные пути к MyFolder, но до сих пор нет успеха на Windows XP

+0

Поддержка Windows XP завершена в течение длительного времени. Любая конкретная причина, почему вам нужно ее поддерживать? – tambre

+0

Он по-прежнему имеет большую пользовательскую базу, более 40% моих клиентов. – Rem

+0

Использование относительных путей, вероятно, зависит от текущего рабочего каталога, который часто является источником проблем. Возможно, в сочетании с LoadLibrary от XP не имеет отношения к относительным путям. Вы попробовали LoadLibrary с полным путем? Или же используйте SetDllDirectory с полным путем к моей папке, а затем используйте LoadLibrary («my.dll»). – stijn

ответ

1

MSDN это сказать о LOAD_WITH_ALTERED_SEARCH_PATH флага:

Если используется это значение и lpFileName определяет относительный путь, поведение не определено.

Если вам не нужна альтернативная стратегия поиска, вы можете просто передать 0 в качестве параметра flags. Если вам действительно нужен этот флаг, вы должны сначала позвонить GetFullPathName, чтобы получить абсолютный путь.