次の問題があります。私の(C ++-)プロジェクトはいくつかのサブプロジェクトで構成されています。それぞれに、起動時に実行したいコードを含むファイルがいくつかあります。これまでの私の解決策は、次のように初期化時にそれぞれのコードを呼び出す静的変数を使用することです。
// Foo.cpp
static TFooRegistry sFooRegistry; // does stuff in constructor.
サブプロジェクトごとにdllを使用してプロジェクトをビルドすると、すべてが正常に機能し、コードは期待どおりに実行されます。ただし、サブプロジェクトを静的にリンクする場合、リンカーはFoo.oに外部から参照されたコードが含まれていないと判断し、最適化します。もちろん、別の場所にsFooRegistryへの参照を追加することもできますが、これは面倒でエラーが発生しやすくなります。
これを解決するための(標準準拠の)方法は何ですか?
OK、mac/gccとwin/visual studioで何ができますか?