crinklerとvisual studio 2017で400byteのexeを作る
最近4kbデモを作りたくてグラフィック面でいろいろ勉強していたんですが、今週は小さい実行ファイルを生成する手法を学びました
開発環境
- visual studio 2017 comunity
- crinkler20a
空のプロジェクトを作成する
最近めっきりvisual studioを触る機会がなかったので知らなかったのですが、win32アプリケーションプロジェクトの作成の仕方が変わっていてびっくりしました
プロジェクト新規作成から【Visial C++>Windowsデスクトップ>Windows デスクトップ ウィザード】でプロジェクト名を設定してOK
次のダイアログで
- Windowsアプリケーションを選択
- 空のプロジェクトをチェック
- セキュリティ開発ライフサイクルのチェックを外してOK
crinklerを入手する
以下のURLよりcrinklerを入手します
解凍して得た crinkler.exe
を link.exe
にリネームして、上記で作成した空プロジェクトのソリューションディレクトリに移動します
こちらはデモシーナー界隈でよく使用されているらしいリンカーで、既存のリンカーと差し替えるだけでファイルサイズを圧縮してくれる優れものだそうです
プロジェクトの設定をする
以下の設定をRelease構成で行います
- 【全般>プログラム全体の最適化】を
プログラム全体の最適化なし
に変更 - 【VC++ディレクトリ>実行可能ファイルディレクトリ】の先頭に
$(SolutionDir)
を追加- 先頭に追加しないと
link.exe
を検索する優先度が既存の物に負けてしまってcrinklerが利用されないので気を付けてください(2時間ぐらい潰されました)
- 先頭に追加しないと
- 【リンカー>入力>すべての既定のライブラリを無視】を
はい
に変更 - 【リンカー>マニフェストファイル>マニフェストの生成】を
いいえ
に変更 - 【リンカー>コマンドライン>追加のオプション】に
/CRINKLER
を追加
main.cppを作成してビルド!
main.cppを作成して以下のコードを入力したらリリースビルドしましょう
int WinMainCRTStartup() { return 0; }
424byteの実行ファイルが作成できました! ちなみにcrinklerなしでビルドすると1,536byteなので1/4弱削減できているみたいです。すごいですね
ここからは映像を表示したり、音楽を再生したりする機能を追加してくことになります
いろいろ見ていると機能追加でだいたい1.5kbぐらいになるみたいですね、使える容量は2.5kbしかないのか...