Здравствуйте, _hum_, Вы писали:
__>ситуация такая — нужно к стороннему симулятору (автомобильного трафика) подключить мой модуль управления (который должен будет разруливать траффик в симуляторе). причем нужно, чтобы при старте симуляции модуль бы инициализировался из файла нужными пользовательскими настройками.
Симулятор — это отдельный EXE, так? И DLL твоя ему никак не нужна, он ее не загрузит. Как ты хочешь ему ее впихнуть ?
__>правильно я вижу подход к решению данной проблемы:
__>- организую в dll-ке статический объект, вмещающий в себя собственно ядро модуля управления; __>- в конструктор объекта всмещаю загрузку из файла настроек и инициализацию ядра;
До сих пор все ясно
__>- организую в dll-ке функции, обсепечивающие интерфейс работы симулятора с модулем.
А вот тут надо уточнить. Что за интерфейс с работающим симулятором (отдельным процессом, не использующим эту DLL) ?
__>в таком варианте меня смущает следующее: если за загрузку dll-ки в общем случае отвечает операционная система
DLL никуда сама не загружается. Ее явно или неявно загружает некий процесс, и при этом не симулятор (которому она не нужна), а твой процесс, который ее загрузит , и о котором ты ничего пока не сказал.
>, как обеспечить гарантированную переинициализацию объекта новыми настройками (ведь может же случиться так, что операционная система не выгрузит из памяти старуюю dll-ку со старым объектом, и при новой симуляции, начнет использовать его же).
Если твой процесс DLL загрузит — может и выгрузить, и перезагрузить.
Мне кажется, ты не совсем верно понимаешь принципы функционирования процессов и подключения DLL. Опиши лучше подробнее задачу. В чужой процесс (симулятор) ты не вмешаешься так просто и DLL ему не впихнешь (разве что хуком, но это особая песня)