Конструктор глобального статического члена не вызывается при компиляции с rvct
Ну, это сложно объяснить. Я собираю статическую библиотеку, которая имеет заголовок, который выглядит примерно так:
class Foo{
static int Goo(){
DoSomethingExciting();
return 0;
}
static int fooMember;
}
В Cpp у меня есть инициализация fooMember:
int Foo::fooMember = Foo::Goo();
При связывании статической библиотеки с приложением, которое я пишу, метод Goo, который должен вызываться, не вызывается. Точнее, метод DoSomethingExciting() вообще не вызывается. Я использую класс Foo в приложении. Когда я ставлю строку:
int Foo::fooMember = Foo::Goo();
в cpp в моем приложении (конечно, я удаляю ту же строку из статической библиотеки), я вижу, что вызывается Goo().
Я не уверен, как назвать проблему, с которой я столкнулся, я думаю, что это проблема с глобальной статической инициализацией члена или что-то в этом роде.
Я использую RVCT для компиляции. При компиляции того же сценария в Visual Studio все работает отлично. Я предполагаю, что RVCT ведет себя по-другому, и мне может понадобиться добавить некоторые флаги компиляции.
Кстати, я также пытался использовать декомпилятор на моем скомпилированном исполняемом файле, и я не видел никаких вызовов Goo(), хотя я видел, что метод находится в файле.
Я надеюсь, что я достаточно ясно с моей проблемой:)
Заранее спасибо...
1 ответ
Он был бы вызван, если бы он был конструктором статического объекта, но, поскольку это всего лишь статический метод, почему вызов к нему генерируется автоматически?