Инициализация глобальных переменных в библиотеке
От: Simbio  
Дата: 17.02.06 20:18
Оценка:
Здравствуйте,моя прогрмма состоит из двух проектов — статической библиотеки (.lib) и графической части, котоорая связывается с этой библиотекой.
В библиотеке есть код следующего вида:

Foo1.cpp :
Foo1Proxy g_foo1Proxy;

Foo1Proxy::Foo1Proxy()
{
DriverFactory::instance().registerDriverProxy( this );
}

Foo2.cpp
Foo2Proxy g_foo2Proxy;

Foo2Proxy::Foo2Proxy()
{
DriverFactory::instance().registerDriverProxy( this );
}

Foo3.cpp
...

Я ожидал, что будет создано по одному глобальному объекту каждого класса, но вместо этого создается только g_foo2Proxy.
Программу компилирую в Visual C++ 7.1 с отключенной оптимизацией (Debug). Кроме определения, эти глобальные переменные нигде больше не используются, и служат для регистрации класса FooXProxy в DriverFactory.

Хотелось бы понять, почему так происходит, и более общий вопрос, когда и как создаются глобальные объекты в статических библиотеках?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.