Я пишу библиотеку трассировки, которая доступна как DLL.Это потребляется в основном каждым компонентом в моей системе.Одно хитрое требование заключается в том, что функции трассировки должны вызываться очень рано в течение времени жизни процесса, даже до запуска main ().
Потребители этой библиотеки включают исполняемые файлы, статически связанные библиотеки DLL, библиотеки с задержкой загрузки и динамически загружаемые библиотеки.библиотеки DLL.Все варианты.
Некоторые функции трассировки плохо воспроизводятся при статической инициализации, но с другими все в порядке.В идеале я хотел бы иметь возможность предлагать потребителям минимальную безопасную функциональность во время инициализации, а затем полную функциональность после завершения инициализации.
Просить потребителей сделать явный вызов "Я закончил, инициализация" сами по себе не делает "t работают из-за того, что некоторые потребители сами являются DLL и не контролируют исполняемый файл, на котором они размещаются.Та же самая проблема просто перемещается на один уровень вверх по цепочке.
Я надеюсь, что у меня есть какой-то способ спросить среду выполнения, выполняется ли в данный момент статическая инициализация или этот этап завершен,Это возможно?
Чтобы еще больше усложнить ситуацию, мне нужно работать на 5 платформах.Мне не нужно решение для однократной записи, но мне нужно, чтобы оно работало как-то на всех платформах.