Ваша проблема здесь в том, что при первом вызове загруженной с задержкой функции контекст активации приложений по умолчанию является текущим контекстом.
Что вам нужно сделать, это создать контекст активации: CreateActCtx , указывающий на ваш собственный манифест (возможно, hinstance + идентификатор ресурса).
Затем, оберните все или, по крайней мере, самый первый, вызов dll с помощью ActivateActCtx (и соответствующая функция деактивации) для обеспечения поиска правильных сборок.
Теоретически вы можете просто встроить код для активации соответствующего контекста в функции delayload helper .