貌似最近安装了一个补丁,VS2008编译的静态MFC程序大小从400K涨到1.6M,这个有木有?

Waiting4you 2011-04-25 07:55:06
用VS2008 SP1,用向导生成一个空的MFC基于对话框的程序,静态MFC库+Release编译。
以前编译的程序一般都在400k~500k左右(都是小工具,在VS2008 SP1下编译)。最近又重新编译了一下之前的那些代码,发现编译出来的文件突然大了好多,全部达到1.5M以上。大家有没有遇到?
貌似最近装了一个VS的补丁,不知道是哪个造成的,想把这个补丁给卸了-_-
...全文
278 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lactoferrin 2011-04-26
  • 打赏
  • 举报
回复
你认为应该有多大
Waiting4you 2011-04-26
  • 打赏
  • 举报
回复
VC6编译的文件很小!!!!很牛X有木有?!!!
2008对标准支持得很好!!!!相当牛X有木有?!!!
装了SP1以后还送个漂亮的界面库,编译的文件也不大!!!!超级牛X有木有?!!!
到了2010,丫的编译完的文件就大了几倍!!!!尼玛呀!!!坑爹呀!!!有木有?!!!
2008就装了个什么补丁也跟着大了好几倍,这么牛X的2008的怎么能说变大就变大了呢?!!!还非贴上一个gdiplus!!!MS尼玛坑爹呢!!!!!!!!程序员你伤不起呀!!!!!!
Lactoferrin 2011-04-26
  • 打赏
  • 举报
回复
那就不用mfc,纯api很好
_free 2011-04-26
  • 打赏
  • 举报
回复
vs2010 静态链接的,debug版本,一个小工程就能达到8兆
smwhotjay 2011-04-26
  • 打赏
  • 举报
回复
vs2008 是大了些..mfc静态更大..1.xM啊
疯狂-的-蜗牛 2011-04-26
  • 打赏
  • 举报
回复
感觉原来用VC6.0建的工程很小,至多也就几兆,现在用VS2008一个工程就是五六十兆,妈呀----
Waiting4you 2011-04-26
  • 打赏
  • 举报
回复
用exescope看了一下,发现DLL引入表里多了不少,连gdiplus.dll都有。这个...如果在win2000下用,搞个小工具不是还要附带个gdiplus.dll? 太不合理了吧?
sky1989sk 2011-04-26
  • 打赏
  • 举报
回复
VS2010 更大....
oyljerry 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 waiting4you 的回复:]

看来大家的Windows更新都开着,呵呵。 可以肯定这是某一次的更新造成的,是不是向VS2010靠拢啦?偶当时就是觉得VS2010编译出来的文件大得离谱才一直用VS2008的,没想到VS2008也"与时俱进"了-_-
[/Quote]
微软就是不断的推动大家前进...
fandh 2011-04-26
  • 打赏
  • 举报
回复
2008sp1的确是因为界面库更改的原因!
不过,对话框没有改!应该可以改配置的!
  • 打赏
  • 举报
回复
貌似是CWinAppEx的问题。
新加的界面库 扩容了不少啊。
Waiting4you 2011-04-26
  • 打赏
  • 举报
回复
看来大家的Windows更新都开着,呵呵。 可以肯定这是某一次的更新造成的,是不是向VS2010靠拢啦?偶当时就是觉得VS2010编译出来的文件大得离谱才一直用VS2008的,没想到VS2008也"与时俱进"了-_-
haogeai123 2011-04-26
  • 打赏
  • 举报
回复
这样也有助于推动电脑硬件的发展啊。
sunlin7 2011-04-26
  • 打赏
  • 举报
回复
VS2008 sp1 里面有BCG界面库,静态链接的话,体积会比较大。需要的话,不应该使用MFC的FrameEx, ViewEx等类。
ouyh12345 2011-04-26
  • 打赏
  • 举报
回复
还好,我编译的是console,暂时没影响
Waiting4you 2011-04-26
  • 打赏
  • 举报
回复
找到解决方案了,确实是补丁引起的,只要在项目加入这个函数就行了:
// this is our own local copy of the AfxLoadSystemLibraryUsingFullPath function
HMODULE AfxLoadSystemLibraryUsingFullPath(const WCHAR *pszLibrary)
{
WCHAR wszLoadPath[MAX_PATH+1];
if (::GetSystemDirectoryW(wszLoadPath, _countof(wszLoadPath)) == 0)
{
return NULL;
}

if (wszLoadPath[wcslen(wszLoadPath)-1] != L'\\')
{
if (wcscat_s(wszLoadPath, _countof(wszLoadPath), L"\\") != 0)
{
return NULL;
}
}

if (wcscat_s(wszLoadPath, _countof(wszLoadPath), pszLibrary) != 0)
{
return NULL;
}

return(::AfxCtxLoadLibraryW(wszLoadPath));
}

引用地址:
http://tedwvc.wordpress.com/2011/04/16/static-mfc-code-bloat-problem-from-vc2010-is-now-in-vc2008-sp1security-fix/

Waiting4you 2011-04-26
  • 打赏
  • 举报
回复
郁闷,貌似没有解决方案了,看来得重装VS2008一个个试才能找出是哪个补丁干的了。
Eleven 2011-04-26
  • 打赏
  • 举报
回复
加了不少东西了~
东方之珠 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 waiting4you 的回复:]
用VS2008 SP1,用向导生成一个空的MFC基于对话框的程序,静态MFC库+Release编译。
以前编译的程序一般都在400k~500k左右(都是小工具,在VS2008 SP1下编译)。最近又重新编译了一下之前的那些代码,发现编译出来的文件突然大了好多,全部达到1.5M以上。大家有没有遇到?
貌似最近装了一个VS的补丁,不知道是哪个造成的,想把这个补丁给卸了-_-
[/Quote]
出入太大了,界面扩展了不少啊!
无幻 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 waiting4you 的回复:]
VC6编译的文件很小!!!!很牛X有木有?!!!
2008对标准支持得很好!!!!相当牛X有木有?!!!
装了SP1以后还送个漂亮的界面库,编译的文件也不大!!!!超级牛X有木有?!!!
到了2010,丫的编译完的文件就大了几倍!!!!尼玛呀!!!坑爹呀!!!有木有?!!!
2008就装了个什么补丁也跟着大了好几倍,这么牛X的2008的怎么能说变大就变大了呢?!!!还非贴上一个gdiplu……
[/Quote]


给力

静态是上MB的
加载更多回复(7)

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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