vs2010使用2008的mfc库

本文介绍如何通过修改Visual Studio 2010的向导脚本来自动调整MFC库大小,使其在使用MFC2008库时体积减小,从而简化手动修改过程。具体步骤包括添加关键代码片段到特定模板文件中,以适应不同版本的MFC库。同时,提供了一种方法将2010自带的MFC目录替换为2008的MFC目录,以便在不改变现有项目配置的情况下灵活切换版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vs2010的MFC库十分大,哪怕一个简单的dialog也是1M多,甚至接近2M。

而2010使用2008的库的时,就会体积减小十分多。

网上有提供手工修改的方法,但是每添加一个工程或dialog都必须手工修改一次,十分的麻烦。

这里介绍一个通过修改vs的向导脚本实现自动兼容与修改。

以下红字部分为需要添加的地方。


\vs2010\VC\VCWizards\AppWiz\MFC\Application\templates\2052\dialog.cpp


#if _MFC_VER >= 0x0A00
#include "afxdialogex.h"
#endif


\vs2010\VC\VCWizards\AppWiz\MFC\Application\templates\2052\stdafx.h

①:

[!if MENUBAR_TOOLBAR || RIBBON_TOOLBAR || USE_VISUAL_MANAGER]
#if _MFC_VER >= 0x0A00
#include <afxcontrolbars.h>     // 功能区和控件条的 MFC 支持
#endif
[!endif]


②:

[!endif]
[!endif]

#if _MFC_VER <= 0x0900
#define CDialogEx CDialog
#endif

[!if MANIFEST]


\vs2010\VC\VCWizards\AppWiz\MFC\Application\templates\2052\dlgroot.cpp

①:

#if _MFC_VER >= 0x0A00
    // 支持重新启动管理器
    m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
#endif


②:

#if _MFC_VER >= 0x0A00
    // 创建 shell 管理器,以防对话框包含
    // 任何 shell 树视图控件或 shell 列表视图控件。
    CShellManager *pShellManager = new CShellManager;
#endif


③:

#if _MFC_VER >= 0x0A00
    // 删除上面创建的 shell 管理器。
    if (pShellManager != NULL)
    {
        delete pShellManager;
    }
#endif

\vs2010\VC\VCWizards\AppWiz\MFC\Application\templates\2052\root.cpp

①:

[!endif]
[!if RESTART_MGR_SUPPORT]
#if _MFC_VER >= 0x0A00
    // 支持重新启动管理器
[!if !RESTART_MGR_SUPPORT_RESTART && !RESTART_MGR_SUPPORT_RECOVERY]
    m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
[!endif]
[!if RESTART_MGR_SUPPORT_RESTART && !RESTART_MGR_SUPPORT_RECOVERY]
    m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART_ASPECTS;
[!endif]
[!if RESTART_MGR_SUPPORT_RECOVERY && !RESTART_MGR_SUPPORT_RESTART]
    m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RECOVERY_ASPECTS;
[!endif]
[!if RESTART_MGR_SUPPORT_RECOVERY && RESTART_MGR_SUPPORT_RESTART]
    m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;
[!endif]
#ifdef _MANAGED
    // 如果应用程序是利用公共语言运行时支持(/clr)构建的,则:
    //     1) 必须有此附加设置,“重新启动管理器”支持才能正常工作。
    //     2) 在您的项目中,您必须按照生成顺序向 System.Windows.Forms 添加引用。
    System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException);
#endif
#endif
[!endif]


\vs2010\VC\VCWizards\AppWiz\MFC\Application\html\2052\default.htm

    <SYMBOL NAME="DYNAMIC_MFC" TYPE="radio" VALUE="false"></SYMBOL>
    <SYMBOL NAME="STATIC_MFC" TYPE="radio" VALUE="true"></SYMBOL>



做完以上操作,可直接把2010自带的MFC目录,改名掉,然后把2008的mfc目录拷过来。随时切换。

\vs2010\VC\atlmfc

\vs2008\VC\atlmfc

这样比在编译器设置里直接使用vc90的优势是,可以同时使用c++tr1,还能同时使用mfc2008 lib


====

mfc2008打包下载地址: http://download.youkuaiyun.com/detail/laybor/6312115

不想手工改的,可以下载以上5个文件打包文件: http://download.youkuaiyun.com/detail/laybor/6274189


====

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值