Существует два варианта, оба из которых далеки от идеальных:
- записать временный файл куда-нибудь
- загрузить DLL в память «вручную», т.е. создать памятьзаблокировать, поместить образ DLL в память, затем обработать перемещения и внешние ссылки.
Недостаток первого подхода описан выше Нейтом.Второй подход возможен, но сложен (требует глубокого знания определенных низкоуровневых вещей) и не позволяет коду DLL обращаться к ресурсам DLL (это очевидно - образ DLL отсутствует, поэтому ОС не знает, гдевзять ресурсы).
Еще одна опция, используемая в некоторых сценариях: создайте виртуальный диск, содержимое которого хранится в ваших файловых ресурсах EXE, и загрузите оттуда DLL.Это возможно при использовании нашего продукта SolFS (версия для ОС), но для создания самого виртуального диска необходимо использовать драйверы режима ядра, которые должны быть записаны на диск перед использованием.