嗯,这有点复杂,无法解释。 我正在编译一个静态库,其头部看起来与此类似:
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()的任何调用,尽管我确实看到该方法在文件中。我希望我对我的问题很清楚:)
提前致谢...
答案 0 :(得分:0)
如果它是静态对象的构造函数,它将被调用,但由于它只是一个静态方法,为什么会自动生成对它的调用?