Большинство приложений имеют одну точку входа (для стандартного C ++ она называется main
), где вы можете создавать объекты, которые сохраняют время жизни приложения.
Из вашего описания звучит так, будто вы на самом деле пишете сервисную библиотеку, которая используется в других приложениях, а не в самом приложении (в общепринятом смысле).
Единственная безопасная вещь, которую нужно сделать, - это сделать вашу службу повторно инициализируемой, поскольку ничто не может помешать приложению динамически загружать dll
, который ссылается на вашу библиотеку, явно выгружая этот dll
, а затем повторно загружаю снова.
В вашей библиотеке нет заметной разницы между промежуточной dll
разгрузкой и обычным завершением.
Пока ваша библиотека загружена, вы можете использовать общие / глобальные данные для отслеживания инициализаций, так что вы выполняете только дорогостоящие шаги инициализации, которые могут совместно использоваться клиентами один раз.
Возможно, вам следует описать, что может вызвать затруднение при повторной инициализации вашей библиотеки?