为什么VC++生成的DLL文件那么大,怎样才能变小

来源:百度知道 编辑:UC知道 时间:2024/05/09 10:55:37
前言:我是初学者,就不举例了,因为知道怎么回答这个问题的人都应该会用VC++编写DLL的。
如题:创建了一个简单的DLL工程,导出两个和数相加并返回结果的函数,如下:
int __stdcall add(int, int); // 标准调用
函数代码如下:
int __stdcall add(int x, int y)
{
return x+y;
}
其它都是系统自动加的代码:
用Def文件导出的,如下
LIBRARY mydll
EXPORTS
add@1

注:为了防止笼统的回答,先象征性的放10分,有好的回答再加20,放心,这分我可以赚回来,我没必要骗人,承诺必践,但也请各位看观不要用什么过于笼统的回答来占沙发,那样你就是骗分了。能说明原因的,从10分加到20分,能给出解决方案的才把多加的20分全给。
谢谢大家了。
哦,说明一下,仅仅导出上面那一个函数我的DLL就200多K,实在令我难以置信。

谢谢大家的认真回答,真心的感谢!
在我仔细的比较后决定采用[stone_dongdong]的答案,奉上30分。当然也谢谢其他的朋友。

1.debug版带有调试信息,所以很大,如果是release版会小很多。
2.项目属性,如果是静态连接运行时库的就比较大,如果是动态连接运行时库的(在共享 DLL 中使用 MFC)就比较小
3.WIN32 dll比较小,且使用不同的运行时库的化,生成的dll文件大小也有差别。(工程属性-》C/C++-》代码生成-》运行时库)。使用不同的运行时库,有微软的、STD的有单线程多线程。

编译时有两个选项,RELEASE和DEBUG,,DEBUG版本在生成文件时会加入很多调试信息,而REALSE版本不包括那些,.所以你决定要发布你的DLL或者打包成安装文件时就选REALSE版本吧.

debug模式首先会有很多运行时验证用的代码。而且对程序库中于完全没用的代码,debug模式连接的时候默认也不会删除。这就是你那200多K的内容。

如果想彻底变小的话,编译的时候巴ignore default library打开,会连C库都不连接。当然代价是你只能用windows api了。

你编译的肯定是debug版本吧?在debug版本中vc会增加很多其它信息所以会大,你编个release版本的出来肯定非常小,试试吧,有问题HI我

这么少的代码量,你编译成DEBUG版了吧~~~RELEASE版本的比较小,一般40KB左右吧~~~~如果你加UPX壳的话,估计剩下10KB都不够了