ええと、これは説明するのがちょっと複雑です。次のようなヘッダーを持つ静的ライブラリをコンパイルしています。
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()の呼び出しは表示されませんでした。
私は私の問題について十分に明確であったことを願っています:)
前もって感謝します...