如何在C++Builder中生成小于100KB的程序

ktcserver 2003-10-15 01:32:50
加精
一般,我们在CB中编写的程序,如果独立运行,程序的大小在100KB以上。我看到一些在WINDOWS下运行的窗口程序,只有40多K这样小的文件在CB中怎样才能编译出来而且能独立运行呢?好象DELPHI有这样的功能,和程序制作方法。
...全文
47 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Micowen989 2003-10-17
  • 打赏
  • 举报
回复
试试来电的方法看看先!
编译失败 2003-10-17
  • 打赏
  • 举报
回复
1. 尽量少用第三方控件,楼上几位说的也对,用底层一些的东西可以提高效率,大小也可以降低,但是太麻烦,而且显现不出BCB的优势。

2. 把库文件分离出来,你以为Windows的程序小是为什么啊?其实也用到了很多库,都包含在操作系统中了。
netying 2003-10-17
  • 打赏
  • 举报
回复
up..
srmonkey 2003-10-17
  • 打赏
  • 举报
回复
受益匪浅
jbz 2003-10-17
  • 打赏
  • 举报
回复
学习
huangjuliang 2003-10-16
  • 打赏
  • 举报
回复
把一些不用dll用掉!
huangjuliang 2003-10-16
  • 打赏
  • 举报
回复
一般用ASPACK这个软件来压缩一下,
能小很多!
pepsi1980 2003-10-16
  • 打赏
  • 举报
回复
坐下听课..:)
lanren_me 2003-10-15
  • 打赏
  • 举报
回复
没必要,除非是做黑客程序;
myredsun 2003-10-15
  • 打赏
  • 举报
回复
其实方法很多,主要看你要写什么样的程序。
freeia 2003-10-15
  • 打赏
  • 举报
回复
用汇编直接写api,很小的,2到3k.
我不懂电脑 2003-10-15
  • 打赏
  • 举报
回复
写控制台程序可以。
netsys2 2003-10-15
  • 打赏
  • 举报
回复
怎样用C++BUILDR编制纯API的?




回复人: shak(人生苦短) ( ) 信誉:100 2003-1-22 8:30:32 得分:0



在上世纪的最后一个晚上,O发觉了编制纯API的C程序
步骤,VCL构架使用简单但代码庞大,一个仅有一个Form1的VCL
程序编译后将产生300K的肥胖目标,如果不用VCL库,仅利用MS
API编制的C++程序所产生的目标将只有8K, 嘿嘿! 瘦得已皮包
骨头,不过,比只有一层皮的 CIH 还胖7倍;

产生无VCL的纯API C++BUILDER 程序步骤:

1.进入C++BUILDER 5.0,关闭缺省工程: File -> Close All;
2.选 File -> New ... -> Console Wizard 进入控制台向导;
3.弹出参数框中,Source Type 选C++,
Use VCL, Multi Threaded, Console Application 三行都
不要选中;
选中Specify project source,且填上工程名: TestAPI
4.点OK后,选中Create a new Unit,将Unit1.cpp内容全清除,
将下列框架粘贴上;
5.存盘,工程名存成TestApi.bpr,运行,产生8kb的目标
TestApi.exe

//---------------------------------------------------------------------------

#ifndef MyFirsSDKAppCppH
#define MyFirsSDKAppCppH
//---------------------------------------------------------------------------
#endif


//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#include "MyFirsSDKAppCpp.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM) ; //窗口消息循环函数向前声明
//---------------------------------------------------------------------------

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine, int nCmdShow)
{ //初始化窗口类
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
char classname[]="窗口"; //窗口类名
char Title[]="My_SDK_TEST_Window"; //窗口标题名
//窗口类的定义
wndclass.lpfnWndProc=WndProc; //窗口处理函数为WndProc
wndclass.cbClsExtra=0; //窗口类无扩展
wndclass.cbWndExtra=0; //窗口实例无扩展
wndclass.hInstance=hInstance,
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //窗口的最小化图标为缺省图标
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); //窗口采用箭头光标
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景为白色
wndclass.lpszMenuName=NULL; //窗口中无菜单
wndclass.lpszClassName=classname;
wndclass.style=0; //窗口类型为缺省类型

if(!RegisterClass(&wndclass)) //窗口类注册
{
MessageBeep(0); //如果注册失败则发出警告声音
return false;
}
//-------------------------------------------------------------------------------------
hwnd=CreateWindow(
classname, //窗口类名
Title, //窗口实例的标题名
WS_OVERLAPPEDWINDOW, //窗口的风格
10, //窗口左上角坐标为缺省值
19,
250,
480, //窗口的高和宽为缺省值
NULL, //此窗口无父窗口
NULL, //此窗口无主菜单
hInstance, //创建此窗口的应用程序的当前句柄
NULL //不使用该值
);

ShowWindow(hwnd,nCmdShow); //显示窗口
UpdateWindow(hwnd); //绘制用户区
while( GetMessage(&msg,NULL,0,0)) //消息循环
{
TranslateMessage(&msg); //键盘消息转换
DispatchMessage (&msg); //分发消息
}
return msg.wParam; //消息循环结束即程序终止时将信息返回系统
}

//------------------------------------------------------------------------------------

LRESULT CALLBACK WndProc(HWND hwnd,UINT message ,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_DESTROY: PostQuitMessage(0); //调用PostQuitMessage发出WM_QUIT消息
default: return DefWindowProc(hwnd,message,wParam,lParam); //默认时采用系统消息默认处理函数
}
return(0);
}
tccsdn 2003-10-15
  • 打赏
  • 举报
回复
再压缩一下
ccrun.com 2003-10-15
  • 打赏
  • 举报
回复
不要用VCL。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧