ページ 11

アプリケーションのサイズについて

Posted: 2008年12月12日(金) 13:19
by kazuoni
お邪魔します。

題名の通りアプリケーションのサイズについてです。

自分はC言語+DXライブラリで制作を進めているのですが、
画像、サウンドは何も用いていません。
総行数約1000行です。
しかし、アプリケーションのサイズは約2.8MBもあります。
(自分が今公開しているDOT_getterなんですが。。)

以前バグさんが紹介されたテトリスでも約1.0MBです
(↓過去ログ)
http://www.play21.jp/board/formz.cgi?ac ... &rln=24882

これはなぜでしょうか?
確保する変数が多すぎるのでしょうか?
C言語とC++の違いでしょうか?
少しでも軽くはできないのでしょうか?

よろしくお願いします。

Re:アプリケーションのサイズについて

Posted: 2008年12月12日(金) 13:34
by 御津凪
・デバッグ版はデバッグ情報を実行ファイルに入れる。
・プロジェクトのプロパティで、最適化に関する項目(ここではリリース版)に関係。
・DX ライブラリは マルチスレッド DLL (/MTd)で作成したライブラリで無いので、
 ランタイムデータが実行プログラムに組み込まれる。
 (強制的に /MTd でリンクしてしまえば小さくなるかも)
・C++ は例外関係及び型情報を持つようにコンパイルすると大きくなる。
等が上げられます。
特に、デバッグ版とリリース版の実行ファイルのサイズは大きく違います。

ランタイムライブラリを実行ファイルにリンクする方法では、使用している
ランタイムライブラリの数によって比例的に増加します。

ただし、ランタイム DLL として作成した実行ファイルは、
ランタイムライブラリのインストールをしていないと起動できません。

Re:アプリケーションのサイズについて

Posted: 2008年12月12日(金) 13:34
by Dixq (管理人)
VisualStudioですか?
ReleaseではなくDebugにしていませんか?

もしVisualStudioでしたら、メニューバー付近に「Debug」と表示されていると思うので「Release」に変更して下さい。
もし表示されていない時は「ビルド」>「構成マネージャー」からも変更できます。

自動変数の表示など、デバッグできなくなる代わりに、実行ファイルが軽くなります。実行速度も変わるようなので、配布時にはReleaseにするといいです。

後、Releaseにしたままでデバッグすると、自動変数に変な値が表示されるので、デバッグする時はDebugに戻してください。

Re:アプリケーションのサイズについて

Posted: 2008年12月12日(金) 20:13
by kazuoni
御津凪さん、管理人さんご回答ありがとうございます^^

お二方のおっしゃる通りでした。。
今まで全く気にしたことがなかったので
デバッグ・リリースの全く違いを理解できていませんでした。
こんな性能のいいvisual C++がまだ使いこなせてません^^;
でもDebug機能はすごいですね。
学校で使ってるLinuxはこの機能がなく、
エラーと言えば「セグメンテーション違反」ですね^^;
最初のころはポインタで躓いていたので、
このエラー文字でどれだけ苦しんだことか・・・w

すみません。。話がそれました。
本当にありがとうございました。

またよろしくお願いします。