我自己的mfc的demo要转换编译环境出现以下编译错误:
VS2010编译错误:fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x0403...的解决方法
在google中找到解决办法,
_WIN32_WINNT这个宏对应定义的系统的版本号,如果太低的话,编译器就会认为代码无法在当前的系统上编译。
说了原因,下面是修改方法,就是在stdafx.h文件中修改相关的定义,修改完后的效果应该如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#ifndef WINVER // Allow use of features specific to Windows 95 and Windows NT 4 or later. #define WINVER 0x0501 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later. #endif #ifndef _WIN32_WINNT // Allow use of features specific to Windows NT 4 or later. #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later. #endif #ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. #define _WIN32_WINDOWS 0x0501 // Change this to the appropriate value to target Windows Me or later. #endif #ifndef _WIN32_IE // Allow use of features specific to IE 4.0 or later. #define _WIN32_IE 0x0601 // Change this to the appropriate value to target IE 5.0 or later. #endif |
但编译后又出现以下问题:
1> stdafx.cpp 1>d:program filesmicrosoft visual studio 10.0vcatlmfcincludeafxwin.h(4024): error C2061: 语法错误: 标识符“PSCROLLBARINFO” 1>d:program filesmicrosoft visual studio 10.0vcatlmfcincludeafxwin4.inl(184): error C2065: “PSCROLLBARINFO”: 未声明的标识符 1>d:program filesmicrosoft visual studio 10.0vcatlmfcincludeafxwin4.inl(184): error C2146: 语法错误: 缺少“)”(在标识符“pScrollInfo”的前面) 1>d:program filesmicrosoft visual studio 10.0vcatlmfcincludeafxwin4.inl(184): error C2761: “BOOL CScrollBar::GetScrollBarInfo(void) const”: 不允许成员函数重新声明 1>d:program filesmicrosoft visual studio 10.0vcatlmfcincludeafxwin4.inl(184): error C2059: 语法错误:“)” 1>d:program filesmicrosoft visual studio 10.0vcatlmfcincludeafxwin4.inl(185): error C2143: 语法错误 : 缺少“;”(在“{”的前面) 1>d:program filesmicrosoft visual studio 10.0vcatlmfcincludeafxwin4.inl(185): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
比较郁闷。。。。
#ifndef WINVER // 允许使用 Windows 95 和 Windows NT 4 或更高版本的特定功能。 //#define WINVER 0x0400 //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。 刚刚此处没有修改 #define WINVER 0x0501 #endif
现在应该正常。
参考网友:
http://www.cnblogs.com/madhenry/archive/2011/06/29/2093678.html