2010-10-27 3 views
1

Сценарий:состояние статической переменной в DLL

Моя Application связать библиотеку X, который имеет статический класс. Я инициализирую его в своем процессе. После некоторого времени, когда я загружаю dll, которые также используют ту же библиотеку X.

Я вижу содержание статическая переменная в dll не инициализируется. Где Я уже инициализировал его в процессе перед загрузкой DLL.

Я добавил код инициализации в основной DLL, и теперь он работает.

Вопрос: Мне нужно понять это поведение/случай.

+0

Отладчик покажет вам, что происходит. – Abyx

ответ

1

библиотека x явно связана как статическая библиотека как с exe, так и с dll: - для того, чтобы получить нужное поведение, сама библиотека X должна быть построена как разделяемая библиотека. Итак, тогда «my application.exe» и «a.dll» будут использовать «libraryx.dll», в результате будет только один экземпляр статического значения.

+0

Согласитесь, я наткнулся на это один раз, когда писал журнал регистрации, в котором у меня был статический логгер (singleton). – Ralf