升级到VS2013常见问题
问题1:
Building an MFC project for a non-Unicode character set is deprecated
解决方法:
用于多字节字符编码 (MBCS) 的 MFC 库 (DLL) 不再包含于 Visual Studio 中,但是可用作插件,您可以在任何装有 Visual Studio Professional、Visual Studio Premium 或 Visual Studio Ultimate 的计算机上下载和安装。(在 Visual Studio 中,必须启用 MFC。)安装需要大约 440 MB 磁盘空间,包括英语(美国)和 DLL 的本地化版本。
在安装 MBCS DLL 后,如果卸载或修复 Visual Studio,则还会卸载或修复。 但是,如果只禁用 MFC,MBCS DLL 仍会保留在系统上。 如果仅卸载或修复 MBCS DLL,将不会修改 Visual Studio。
总结下就是安装 Multibyte MFC Library for Visual Studio 2013
详细信息:http://blogs.msdn.com/b/vcblog/archive/2013/07/08/mfc-support-for-mbcs-deprecated-in-visual-studio-2013.aspx
下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=40770
问题2:
warning C4996: 'MBCS_Support_Deprecated_In_MFC': MBCS support in MFC is deprecated and may be removed in a future version of MFC.
解决方法:
这个链接http://go.microsoft.com/fwlink/p/?LinkId=279048文中提到可以通过将 NO_WARN_MBCS_MFC_DEPRECATION 预处理器定义添加到您的项目生成定义消除此警告。在项目stdafx.h文件中的#pragma once下面添加
- #define NO_WARN_MBCS_MFC_DEPRECATION
- #define NO_WARN_MBCS_MFC_DEPRECATION
问题3:
error C1189: #error : MFC does not support WINVER less than 0x0501. Please change the definition of WINVER in your project properties or precompiled header.
解决方法:
将stdafx.h文件中的
- #define WINVER 0x0400
- #define WINVER 0x0501
- #define _WIN32_WINNT 0x0400
- 改为
- #define _WIN32_WINNT 0x0501
- #define WINVER 0x0400
- #define WINVER 0x0501
- #define _WIN32_WINNT 0x0400
- 改为
- #define _WIN32_WINNT 0x0501
问题4:
_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
解决方法:
在StdAfx.h头文件里面加上#include <SDKDDKVer.h>有关于平台的定义
问题5:
warning C4996: 'CWinApp::Enable3dControlsStatic': CWinApp::Enable3dControlsStatic is no longer needed. You should remove this call.
解决方法:
直接注释掉 代码如下
- #ifdef _AFXDLL
- Enable3dControls(); // Call this when using MFC in a shared DLL
- #else
- //Enable3dControlsStatic(); // Call this when linking to MFC statically
- #endif
- #ifdef _AFXDLL
- Enable3dControls(); // Call this when using MFC in a shared DLL
- #else
- //Enable3dControlsStatic(); // Call this when linking to MFC statically
- #endif
问题6:
LNK4075: ignoring '/EDITANDCONTINUE' due to '/SAFESEH' specification
解决方法: