2つのコンパイル単位(globals.cpp
とstuff.cpp
)を持つ共有ライブラリをコンパイルしています。 globals.cpp
ファイルは、stuff.cpp
で使用されるいくつかのextern変数を初期化します。私が経験している問題は、globals.cpp
のコードがextern変数に値を代入する機会があった前に、stuff.cpp
のコードが実行されていることです。たとえば、0
の値が使用されています。この問題は、コードをコンパイル/実行するプラットフォームによって異なります。一部のプラットフォームでは動作しません。私のextern変数がまだ初期化されていないのはなぜですか?
これを解決するにはどうすればよいですか?最初にglobals.cpp
をに強制的に実行することはできますか?
[static initialization order fiasco] [1]が発生しています。 [1]:http://stackoverflow.com/questions/3035422/static-initialization-order-fiasco – kfmfe04
ありがとう、少なくとも問題を解決します。 – sholsapp