none
実行形式ファイルのサイズが大きすぎる RRS feed

  • 質問

  • 実行形式ファイルのサイズが大きすぎる

    OS:Windows Vista
    Visual Studio 2008 Standard Edition
    言語:Visual C++
    Microsoft Visual C++ 2008 SP1 :導入済み
    Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86):導入済み

    [ファイル]-[新規作成]-[プロジェクト]-[Visual C++]-[MFCアプリケーション]
    [ダイアログベース]-[ActiveXコントロールのチェックだけは外す]
    [構成マネージャ=Release]-[スタティック ライブラリで MFC を使用する]
    [デバッグ情報の生成=いいえ]

    上記状況で、ソリューションのビルドをすると、約1.6MBの実行形式ファイルが作成されます。
    「OK」を押せば終了するだけのプログラムにしては、ファイルサイズが大きいように思います。
    何かが変だと思いますが、正常なのでしょうか?
    最適化をしても全然小さくなりません。
    なお、Visual Studio 6.0で作成したプロジェクトをVisual Studio 2008に移植して作成すると、
    [スタティック ライブラリで MFC を使用する]であっても、300KB程度です。

    質問者:死者の軍団

     

    2009年6月26日 10:08

回答

  • MFC Feature Packの影響かな?(VS2008SP1で追加)

    作成されたプロジェクトのAppクラスの基底クラスがCWinAppExクラスになっていると思いますが、これをCWinAppクラスに変えて、InitInstanceメンバ関数の中のCWinAppEx::InitInstance()の呼び出しもCWinAppクラスのものに置き換えれば、小さくなるかと。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年6月26日 15:43
    モデレータ
  • CWinAppExが何なのかわかりませんが、ともかく解決して良かったです。
    VS2008SP1にはMFC Feature Packと呼ばれるクラス群が大幅に追加されています。
    CWinAppExクラスはこのMFC Feature Packで追加され、また、MFC Feature Packの多くのクラス群がCWinAppExクラスを前提としているようです。
    http://msdn.microsoft.com/ja-jp/library/bb983877.aspx

    イメージ的には、CWinAppクラスを拡張して色々と持たせたものと思っておけば良いかなぁ。(適当な物言いですみません)
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年6月26日 22:52
    モデレータ

すべての返信

  • MFC Feature Packの影響かな?(VS2008SP1で追加)

    作成されたプロジェクトのAppクラスの基底クラスがCWinAppExクラスになっていると思いますが、これをCWinAppクラスに変えて、InitInstanceメンバ関数の中のCWinAppEx::InitInstance()の呼び出しもCWinAppクラスのものに置き換えれば、小さくなるかと。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年6月26日 15:43
    モデレータ
  • お見事!

    Azuleanさん、どうもありがとうございました。
    ご指摘のとおり修正をすると、無事、ファイルサイズが小さくなりました。
    CWinAppExが何なのかわかりませんが、ともかく解決して良かったです。

    // CWinAppEx::InitInstance();修正前
     CWinApp::InitInstance(); 修正後

    //class CTest3App : public CWinAppEx 修正前
    class CTest3App : public CWinApp   修正後

    2009年6月26日 16:13
  • CWinAppExが何なのかわかりませんが、ともかく解決して良かったです。
    VS2008SP1にはMFC Feature Packと呼ばれるクラス群が大幅に追加されています。
    CWinAppExクラスはこのMFC Feature Packで追加され、また、MFC Feature Packの多くのクラス群がCWinAppExクラスを前提としているようです。
    http://msdn.microsoft.com/ja-jp/library/bb983877.aspx

    イメージ的には、CWinAppクラスを拡張して色々と持たせたものと思っておけば良いかなぁ。(適当な物言いですみません)
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年6月26日 22:52
    モデレータ
  •  親切な回答を頂きありがとうございます。
     更なる勉強を続けてまいります。
    2009年6月27日 12:07