Да, это возможно. Вам нужно убедиться, что исполняемый файл явно загружает вашу DLL (через LoadLibrary). Если ваш исполняемый файл неявно загружает вашу DLL, у вас возникнут проблемы, описанные Франци.
Чтобы обновить библиотеку во время работы исполняемого файла:
- Определите некоторые соглашения для подготовки новой версии DLL. Это может быть в отдельной папке, или с другим именем файла / расширением.
- Имеется средство проверки новой версии DLL. Это может быть в ответ на какой-то конкретный жест в пользовательском интерфейсе, или вы можете отслеживать каталог на предмет изменений в фоновом потоке.
- Когда вы видите новую версию, выгрузите старую версию (FreeLibrary), затем удалите ее, переместите новую версию в нужное место и перезагрузите ее (LoadLibrary).
Если ваша DLL реализует какие-либо COM-объекты, дайте мне знать, и я дам вам несколько дополнительных советов.