Ну, это довольно сложно объяснить.Я собираю статическую библиотеку с заголовком, который выглядит примерно так:
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 (), хотя я видел, что метод находится в файле.
Я надеюсь, что я достаточно ясно с моей проблемой:)
Заранее спасибо ...