旧的vs2005或2008工程项目转换成vs2010更高版本时遇到的3个问题

本文解决VS2010编译时遇到的三个典型问题:宏定义_WIN32_WINNT版本过低导致的致命错误;使用不安全函数的编译警告;文件编码不匹配产生的编译警告。

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

问题一:
错误场景,公司给了我一个vs2008或vs2005的项目文件,我电脑只安装了vs2010,打开转换并编译出现如下错误:
  1. fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended.


搜寻_WIN32_WINNT找到如下代码:
  1. #ifndef _WIN32_WINNT // 允许使用 Windows NT 4 或更高版本的特定功能。
  2. #define _WIN32_WINNT 0x0400 // 为 Windows98 和 Windows 2000 及更新版本改变为适当的值。
  3. #endif
更改为如下:
  1. #ifndef _WIN32_WINNT // 允许使用 Windows NT 4 或更高版本的特定功能。
  2. #define _WIN32_WINNT 0x0500 // 为 Windows98 和 Windows 2000 及更新版本改变为适当的值。
  3. #endif
编译顺利通过! ^-^

问题二:

  1. 1>d:\test_c\testrw\filedlg.cpp(118): warning C4996: 'sprintf': This function or variable may be unsafe. 
  2. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  3. 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(371) : 参见“sprintf”的声明
  4. 1>d:\test_c\testrw\filedlg.cpp(142): warning C4996: 'fopen': This function or variable may be unsafe. 
  5. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  6. 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(234) : 参见“fopen”的声明
复制_CRT_SECURE_NO_WARNINGS,右键其项目属性>>配置属性>>C/C++>>预处理器>>预处理器定义,
点击其下拉箭头里的[编辑],换行粘贴_CRT_SECURE_NO_WARNINGS,确定,应用,确定。。。
编译通过,那该死的警告也没有了! ^-^

问题三:
  1. warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

双击进入到有警告的文件,
点击>>【文件菜单】>>【高级保存选项】>>编码:Unicode(UTF-8)-代码页 65001 
更改编码格式为【简体中文(GB2312)- 代码页936】或【Unicode】,总之是适合自己的编码格式
我这里更改为 Unicode - 代码页 1200
最遗憾的是多个文件要多次进行这样重复的操作,:(
有警告时的文件保存编码:

 我这里更改后的文件编码:

 编译通过,那该死的警告也没有了! ^-^
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值