Здравствуйте,моя прогрмма состоит из двух проектов — статической библиотеки (.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.
Хотелось бы понять, почему так происходит, и более общий вопрос, когда и как создаются глобальные объекты в статических библиотеках?