質問

私の関心の低減ファイルサイズの私の願います。でMFC/C++アプリケーションを構築MVC++、Visual Studio2008年.UPXの削減最終exeを約40%オリジナルサイズのこと間違いないでしょう動きをタイムリーかつ詳細に。

MFCな静的にリンクです。

この方法の概要この質問: の低減-windows実行ファイルサイズ.具体的には適用の異なる設定のコンパイラ/リンカー.

できると思ってい削減のサイズをさらに見るコスト"を含む特定のヘッダのプロジェクト.

いず先方にとっては、そのツールが自分のコードを分析してもらえますか?感謝

役に立ちましたか?

解決

あなたは、おそらくこの中に間違っています。ヘッダを削除するとやや短く、ビルド時間をもたらすことができますが、(あなたがとにかくある時点で必要になります)彼らが含まれていることはほとんどあり宣言として、彼らは、最終的な実行可能ファイルのサイズにほとんどまたは全く効果を持っている必要があります。

他のヒント

プロジェクトのサイズを小さくする唯一の方法は、コードの量を減らすことです。ニールは述べたように、ヘッダを削除することだけで、ビルド時間を短縮します。コンパイラは「名前空間を使用して」句を行うとき、彼らはのみ必要とされているものを選択しましょうすべてのものは含まれません。さて、一方で、あなたは削除する必要があり、クラスの良い指標であるプロジェクト内の任意の場所ですべて使用されていないものにヘッダを追加している場合。

あなたの仮定は明らかに実行可能なサイズは、何らかの形で貢献する成分の和であり、特定のソースファイルであることです。それはちょうどそのように動作しません。

例えば、std::list<T>::sizeのコードを仮定する。それは多くの翻訳単位で使用することができます。しかし、リンカにもさまざまな種類のために、時々、一緒T.を多くのコピーを折るだろう。しかし、どのようにexectuableで、結果として得られたバイトを占めるでしょうか?

さて、あなたも、あなたがより複雑な構造を占めるだろうか、という簡単なバイトのための関数(のセット)を考慮する方法を決定することができない場合は?あなたはindivualソースファイルに実行可能に使用されるバイトを割り当てることができない場合と、あなたは個々の寄与を決定することはできません。

ヘッダーはのみものを含むかもしれません:

  1. マクロ
  2. 型定義(のようなクラス)
  3. 機能進宣言の機能の定義できます。c/.cppファイル)

この中から、実際の結果と機械のコード生成されなければ実際に使用されるコードおります。c/.cppファイルです。

現在のニーズに解析できる追加コンパイル時間が無視されない限り実際に使用します。

既存の回答のほとんどは、ヘッダのみを実行可能な大きさに影響を及ぼさない宣言を入れることを想定しています。もちろん、その仮定が成り立つならば、それは本当だが、それはヘッダが(一般的に、関数定義を)だけでなく、実際のコードが含まれてするのはかなり一般的になっており、それらは、コードサイズに貢献します。

これらの機能は、実際に最終的な実行可能ファイルにリンクされている場合は、

一方で、彼らは唯一の貢献します。あなたがコールのこれらの機能を場合、彼らは唯一の最終的な実行可能にリンクされています。だから、ヘッダは、実行可能ファイルのサイズを成長させることに貢献する可能性があるにもかかわらず、どのようなあなたはそれをどうするつもりですか?あなたがのコードを削除の使用することはできません。ヘッダファイルを削除すると、ちょうどそのオプションではありません - 。あなたがどこかにそのコードを移動し、それが実行可能なサイズを大きくますしない限り、のいずれにせよ

は、ヘッダのいずれかに違いはありませんので、またはそれはあなたがそれでのコードを使用するので、違いを確認し、それを削除することはできません。いずれの場合も、削除するヘッダがずっとあなたを購入するつもりはないされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top