Visual Studio 2012 を使用してデバッグ モードでプログラムをコンパイルしています。StylesDatabase.cpp と LanguagesDatabase.cpp は、以前は /bigobj なしで正常にコンパイルされていました ... 一部の関数を削除し、一部の関数を保護されたものからパブリックに移行したためです。
どちらの C++ ファイルもかなり小さいですが、Boost.MultiIndex(es)、Boost.Unordered(_maps)、Wt::Dbo::ptrs などのテンプレート化されたコンテナー クラスを使用します。Wt::Dbo::ptr はデータベース オブジェクトへのポインタで、Wt::Dbo は ORM ライブラリです。
この変更の後、コンパイラは失敗し、/bigobj を設定するように求められます。/bigobj を設定した後、コンパイラは正常に動作しますが、リンカーには 30 分以上かかりました。
だから私の質問は:
- かなり小さなファイルが Visual C++ の制限を超えるのはなぜですか? 制限を超える正確な原因は何ですか。
- cpp ファイルを分割せずに制限を超えないようにするにはどうすればよいですか?
- リンカに時間がかかるのはなぜですか?
必要に応じてソースを提供できます。