首页 > 代码库 > error C1189以及warning MSB8012

error C1189以及warning MSB8012

今天在将一个VS2003的工程转化为VS2010的时候,出了一些问题。

首先是:

fatal error C1189: #error :  This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended.

其次是:

warning MSB8012: TargetExt(.exe) 与 Linker 的OutputFile 属性值(.scr)不匹配。

针对第一个bug的解决方案是找到stdafx.h,添加以下的语句,并且注释掉类似的。

#ifndef WINVER // Allow use of features specific to Windows95 and Windows NT 4 or later.
#define WINVER 0x0501 // Change this to theappropriate value to target Windows 98 and Windows 2000 or later.
#endif

#ifndef _WIN32_WINNT // Allow use of featuresspecific to Windows NT 4 or later.
#define _WIN32_WINNT 0x0501 // Change this to theappropriate value to target Windows 98 and Windows 2000 or later.
#endif

#ifndef _WIN32_WINDOWS // Allow use of featuresspecific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0501 // Change this tothe appropriate value to target Windows Me or later.
#endif

#ifndef _WIN32_IE // Allow use of featuresspecific to IE 4.0 or later.
#define _WIN32_IE 0x0601 // Change this to theappropriate value to target IE 5.0 or later.
#endif

 

针对第二个bug的原因是linker的输出文件和目标文件不一致,从而导致不能正常的链接程序,这一点我们可以参考任何一个正常的VS2010的工程,观察期那些目录的设置,然后把转换的工程的目录配置改成和正常工程的目录配置一样就可以了。

VS2010中属性-》配置属性-》常规


VS2010中属性-》链接-》常规


VS2003中经过VS2010转化后Release版本的展示,属性-配置属性-》常规


VS2003中经过VS2010转化后Release版本的展示,属性-》链接-》常规


error C1189以及warning MSB8012