【发布时间】:2011-06-21 23:11:51
【问题描述】:
嗯,这有点复杂。 我正在编译一个静态库,它的头文件看起来类似于:
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() 的任何调用,尽管我确实看到该方法在文件中。
我希望我对我的问题足够清楚:)
提前谢谢...
【问题讨论】:
标签: c++ arm static-members realview