Перехват зависимостей DLL в приложении Win32 - PullRequest
0 голосов
/ 06 мая 2011

Как я могу поймать отсутствующую DLL в зависимой DLL?

Например: Приложение загружает DLL A.

DLL A загружает DLL B.

Так что, если DLL B недоступна, приложение просто показывает мне: DLL A не найдена.

Есть какие-либо подсказки, где я мог бы найти решение?

В настоящее время я использую средство зависимости для решения этой проблемы.проблема, но мне нужно что-то внутри приложения, так что клиенты не должны запускать внешний инструмент всякий раз, когда отсутствует DLL.

Ответы [ 3 ]

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

Мне не совсем понятно, какой у вас вариант использования здесь, но ваше приложение не может вызвать LoadLibrary , чтобы проверить, доступны ли библиотеки DLL перед запуском "внешнего инструмента", и если отчет не работаетчто библиотеки DLL отсутствуют?

0 голосов
/ 07 мая 2011

Вы можете проанализировать IAT и реализовать алгоритм , аналогичный алгоритму, используемому LoadLibrary , чтобы проверить, будет ли найдена dll.Начало реализации этого - ImageNtHeader

0 голосов
/ 07 мая 2011

Вы можете явно загрузить DLL.Вы получите ошибку / исключение, если у вас отсутствует зависимость.

Возможно, вы можете статически скомпилировать код в DLL, чтобы устранить проблему?

Если вы боретесь с " DLL Hell"Вы также можете разместить DLL в файловой системе, чтобы Windows загружала нужные вам DLL.

...