VS2010 Build MFC always links gdiplus.dll

在使用VS2010编译MFC程序的时候(以静态MFC的方式包含),发现程序会自动将gdiplus.dll链接到生成的exe文件中,即使你没有使用gdiplus中的任何函数。

使用VS2008编译同样的程序,也会有gdiplus.dll链接到exe文件中,分析一下程序,是因为CDialogEx这个对话框的基类引起的,原因是CDialogEx中引入了一些对窗口进行特殊处理的方法,可能使用了gdiplus中的函数。将CDialogEx改为CDialog后,在VS2008下编译程序,查看exe就没有gdiplus.dll的链接了。

以同样的方法对VS2010中的MFC程序进行修改,结果仍然包含gdiplus.dll的链接。

下面是Windows C++组对这个问题的回复:

 

由 Microsoft 在 2010/7/23 13:31 发送
Hello,

Thanks for the report. This is by design. MFC uses the ATL CImage class internally, which depends on GDIPlus to be able to draw PNG images.

Pat Brenner
Visual C++ Libraries Development

 

最终的原因是因为MFC中的类CImage使用了GDIPlus的相关方法(主要是用于PNG图片的绘制)导致的。

 

由 Microsoft 在 2010/8/4 11:55 发送
Hi,
You didn't see gdiplus.dll in your application when you use dynamic mfc because mfc100*.dll but not your application depends on gdiplus.dll. If open expand mfc100*.dll, you can see gdiplus.dll there.
When you static link to mfc, then mfc is part of your application, so you will see gdiplus.dll under your application.
Thanks,
Windows C++ Team

 

所以使用动态MFC链接方式编译的话就不会有gdiplus.dll的链接,是因为mfc100*.dll包含了gdiplus.dll的链接,原因就是出在MFC的底层类库。

最后,Microsoft的答复是他们正在处理。希望能在下一次的补丁中看到相关修改吧!


HITZZL

2010年12月30日

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值