プロが教える店舗&オフィスのセキュリティ対策術

全くの超入門者です
ですが、どうしてもやりたいことがあります
タイトル通りなんですが、実行ファイルの容量を減らしたいです
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;
}

本当に超入門者なんで、こんなことやっても違うことやって知識身につけろといいたいかもしれませんが
せめて簡単なやり方だけでもお願いします
いつか使用したいので..

A 回答 (2件)

アセンブラで全て書くか、



http://www.vector.co.jp/soft/win95/util/se184855 …

↑ここに UPXMask というソフトがあります。UPXMask はバイナリを圧縮します。実行時に圧縮ソフトもいらないので結構使えますよ。

ソースレベルでサイズを落とすのには限界があるのでこういうツールを使うのも手かと。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/09/08 18:42

それはそうでしょう。


printfを使うためのライブラリを無視してしまえばエラーが出るのはあたりまえです。

空のmainCRTStartupを自分で定義する場合、Cランタイム関数も使用することが出来ないと思ったほうがいいです。
名前のとおり、Cランタイムの起動時処理を行う関数ですし。

なんで、実行ファイルを小さくするテクニックとしては、
Cランタイムを使わず、Windowsであれば、WindowsAPIのみでプログラムを作成すればいいでしょう。

WinAPIはDLL中に存在するのでなのでリンクを行うだけで使用可能です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/09/08 18:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!