• ベストアンサー

実行ファイルの容量を減らしたいです

全くの超入門者です ですが、どうしてもやりたいことがあります タイトル通りなんですが、実行ファイルの容量を減らしたいです Releaseとかいろいろやって、16KB程度まで落としたのですが 色々とみると、容量が小さいのを良く見かけます なので、ライブラリを全て無視したところ、実行ファイルが1KBまで 減少できました しかし、これをすると main.obj : error LNK2001: 外部シンボル "_printf" は未解決です Release/main.exe : fatal error LNK1120: 外部参照 1 が未解決です。 link.exe の実行エラー というエラーが出てきてしまいます ソースはこのようになっています #include <stdio.h> #include <windows.h> main(){ printf("sss"); } mainCRTStartup (HINSTANCE hInstance,DWORD fdwReason,PVOID pvReserved){ return TRUE; } 本当に超入門者なんで、こんなことやっても違うことやって知識身につけろといいたいかもしれませんが せめて簡単なやり方だけでもお願いします いつか使用したいので..

質問者が選んだベストアンサー

  • ベストアンサー
  • HogePiyo
  • ベストアンサー率57% (24/42)
回答No.2

アセンブラで全て書くか、 http://www.vector.co.jp/soft/win95/util/se184855.html ↑ここに UPXMask というソフトがあります。UPXMask はバイナリを圧縮します。実行時に圧縮ソフトもいらないので結構使えますよ。 ソースレベルでサイズを落とすのには限界があるのでこういうツールを使うのも手かと。

dinowave
質問者

お礼

す、すごい! C++以外でもこれは使用できるんですね! C++もそうでしたが、他のやつでも困ってたんで丁度良かったです 早速使わせてもらいました!ありがとうございます!

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

それはそうでしょう。 printfを使うためのライブラリを無視してしまえばエラーが出るのはあたりまえです。 空のmainCRTStartupを自分で定義する場合、Cランタイム関数も使用することが出来ないと思ったほうがいいです。 名前のとおり、Cランタイムの起動時処理を行う関数ですし。 なんで、実行ファイルを小さくするテクニックとしては、 Cランタイムを使わず、Windowsであれば、WindowsAPIのみでプログラムを作成すればいいでしょう。 WinAPIはDLL中に存在するのでなのでリンクを行うだけで使用可能です。

dinowave
質問者

お礼

どうもありがとうございます! mainCRTStartupはそういうやつだったんですね、 それじゃあprintfも使用できないわけですね~ ありがとうございます!では早速そのやり方を実行させてもらいます!

関連するQ&A