У меня есть библиотека, которая вызывает функции из foo.dll.
В моих настройках MSVS я задерживаю загрузку foo.dll и вручную проверяю его существование, прежде чем пытаться вызвать его функции (так что если он не не существует на машине, моя библиотека не взломает sh).
Если проверка существования DLL успешно завершена, и я вызываю ее функции, DLL автоматически загружается при задержке загрузки windows помощник и все работает хорошо.
Однако на 50% компьютеров моего пользователя foo.dll был переименован в bar.dll. Даже если я вызываю LoadLibrary ("path \ bar.dll"), и она успешно выполняется, моя библиотека все равно падает, потому что помощник по отложенной загрузке все еще пытается загрузить foo.dll при вызове одной из функций.
Я использовал шестнадцатеричный редактор для просмотра содержимого моей библиотеки, и в одном месте «foo.dll» явно назван. Если я переименую эту запись в "bar.dll" с помощью шестнадцатеричного редактора, моя библиотека будет работать без ошибок, когда bar.dll - это имя DLL на компьютере пользователя (и происходит сбой, когда foo.dll - это имя). Так что, похоже, проблема в том, что помощник с задержкой загрузки пытается загрузить DLL с явно заданным именем внутри моей библиотеки.
Как я могу сказать помощнику по отложенной загрузке, что рассматриваемая DLL имеет имя, которое не соответствует явное имя файла в моей скомпилированной библиотеке?