私は以下の問題があります。私の(C++ - )プロジェクトはいくつかのサブプロジェクトで構成されています。それぞれには、起動時に実行したいコードのファイルがいくつかあります。リンカーがスタートアップコードを最適化しないようにするには?
// Foo.cpp
static TFooRegistry sFooRegistry; // does stuff in constructor.
各サブプロジェクトのためのDLLを使用して私のプロジェクトをビルド、すべてが正常に動作し、期待通りのコードが実行されます。私のソリューションは、これまでのところ、このように初期化時にそれぞれのコードを呼び出す静的変数を使用することです。しかし、サブプロジェクトを静的にリンクするとき、リンカーは、Foo.oに外部から参照されたコードがないと判断し、最適化します。もちろん、sFooRegistryへの参照を他の場所に追加することもできますが、これは面倒でエラーが発生しやすいです。
これを解決するにはどのような(標準に準拠した)方法がありますか?
OK、mac/gccとwin/visual studioで何ができますか?
Doh!親愛なるBjarne:なぜですか? – Tobias
リンカーがコードを最適化してリンクを張っていないのと違う点は何ですか?私はこれが同じことのちょうど2つの名前だと思った。 – Tobias
C++は、コンストラクタの概念を持たない既存のリンカ(StroustrupのD&Eブックを参照)と連携するように設計されています。 –