VS2013报错-bug原因及解决方案

本文总结了VS2013在运行时遇到的一些错误,包括Stack corruption错误、main函数参数问题、代码结果错误以及链接错误。详细分析了错误原因,并提供了相应的解决方案,如检查数组越界、修改Character Set设置、修正语法错误以及添加链接库等。

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

#####################################################################################

VS2013中Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted 错误

 

 

 

原因:数组越界

 

#define DATA_BUFIZE 64

getline(cin,str);
ZeroMemory(buf,BUFSIZ);
strcpy(buf,str.c_str());
Ret=send(sHost,buf,strlen(buf),0);
if(Ret==SOCKET_ERROR){
   printf("send() is error\n");
   closesocket(sHost);
   WSACleanup();
   return -1;
}



定义的DATA_BUFSIZE错写成BUFSIZE

 

#####################################################################################

vs2013 main 主函数传递字符串参数时只能获取首字符

原因:Unicode编码格式与多字符集的问题,工程默认是Unicode格式

解决方案:把Character Set选项设置为Use Multi-Byte Character Set

project->propertise->Configuration Propertise->General->Project Default->Character Set

两套字符集通用宏:

 

MultiByteUnicode通用宏功能
charwchar_tTCHAR字符
atoi_wtoi_ttoi字符串转换为int型
atof_wtof_tstof字符串转换为float型
_atoi64_wtoi64_ttoi64字符串转换为64位整型
itoa_itow_itotint 型转换为字符串
gcvt_wtof_tstoffloat型转换为字符串
strlenwcslen_tcslen获取字符串长度
strstrwcsstr_tcsstr字符串截取
strcpywcscpy_tcscpy字符串复制
_stprintf_ssprintf_sswprintf_s字符串赋值

 

#####################################################################################

vs2013代码结果是错的

原因:判断时少写了一个=号

Ret=recv(sClient,buf,BUFSIZE,0);
if(Ret=SOCKET_ERROR){
  printf("recv() is error");
  closesocket(sClient);
  WSACleanup();
  return -1;
}

 

#####################################################################################

VS2013中unresolved external symbol ##### referenced in function ########## 错误

原因:链接时找不到所涉及函数的定义或引用了外部库文件的函数时没有将依赖的库文件包含进来

例:

加入链接库ws2_32.lib

#pragma comment(lib,"ws2_32.lib")

 

#####################################################################################

VS2013中use ##函数 or ##函数 instead or define  _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings 错误

原因:高版本vs在编译时默认使用新函数

新函数替换旧函数或者加入定义或者把SDL checks改为否(project->properties->Configuration Properties->c/c++->General->SDL checks)

 

<think>好的,我需要解决用户关于VS2013中C1903编译错误的问题。首先,我要回忆一下C1903错误的常见原因和解决方法。根据之前的引用内容,虽然用户提供的引用中没有直接提到C1903,但可能有一些类似的情况可以参考。 首先,C1903错误通常与编译器内部问题有关,可能是由于代码问题或环境配置不当。例如,引用[1]提到C1001错误可能与系统兼容性或代码规范有关,所以可能需要检查代码规范性。另外,引用[3]提到项目平台工具集的问题,可能需要调整项目设置。 接下来,我应该分步骤思考解决方案: 1. **检查代码规范**:用户是否在错误指向的位置有自定义代码?如果有,需要检查语法、头文件包含是否正确,是否存在复杂的模板或宏展开,这些都可能导致编译器崩溃。建议用户简化代码结构,分步编译。 2. **清理临时文件**:有时候旧的编译缓存会导致问题,清理解决方案、删除临时文件(如ipch、sdf)可能会有帮助。这一步在VS中常见,可能解决一些编译问题。 3. **更新Visual Studio**:引用[1]提到更新到Update5补丁,所以用户应确保VS2013已安装最新更新,修复已知的编译器bug。需要指导用户如何检查更新。 4. **检查项目设置**:引用[3]中关于平台工具集的问题,用户可能在使用不同版本的工具集导致兼容性问题。需要确认项目属性中的平台工具集是否设置为VS2013(v120),必要时重新安装或修复该工具集。 5. **内存和资源限制**:C1903有时与内存不足有关,尤其是在处理大型项目时。关闭其他程序,增加系统虚拟内存可能有帮助。 6. **系统兼容性**:如果以上步骤无效,可能需要考虑系统兼容性,如以管理员身份运行VS,或调整系统设置,如字符编码(引用[1]提到字符编码问题)。另外,检查是否有第三方插件冲突,禁用后测试。 7. **重新安装VS2013**:作为最后的手段,如果所有方法都失败,可能需要重新安装VS2013,确保安装所有必要的组件和更新。 在回答时,需要结构清晰,分点列出步骤,并引用相关的参考资料,比如更新补丁参考引用[1],项目设置参考引用[3]。同时,生成的相关问题要围绕编译器错误、解决方案、项目配置等主题,确保用户能进一步了解相关问题。</think>### 解决VS2013 error C1903的步骤 error C1903是Visual Studio 2013中常见的编译器内部错误,通常由代码复杂性、编译器缓存问题或环境配置导致。以下是逐步解决方案: 1. **检查代码规范** - 确认错误提示的位置是否为自定义代码。若是,需检查语法、模板展开或宏定义是否过于复杂。例如: ```cpp // 避免嵌套过深的模板或宏 template<typename T> void process(T&& arg) { /* ... */ } // 简化模板逻辑 ``` - 分模块编译,逐步定位问题代码。 2. **清理编译缓存** - 执行菜单栏的**生成 > 清理解决方案**。 - 手动删除项目目录下的`.ipch`、`.sdf`、`Debug`/`Release`文件夹[^1]。 3. **更新Visual Studio 2013** - 打开VS2013,进入**帮助 > 检查更新**,确保已安装Update 5补丁包(需通过Microsoft官方渠道下载)[^1]。 - 更新后重启IDE。 4. **调整项目平台工具集** - 右键项目,选择**属性 > 配置属性 > 常规**,确认**平台工具集**为**Visual Studio 2013 (v120)**。 - 若工具集未安装,需通过VS安装程序重新勾选该组件(类似引用[3]中MSB802错误的解决逻辑)[^3]。 5. **优化系统资源** - 关闭占用内存的应用程序。 - 增加虚拟内存:进入**控制面板 > 系统 > 高级系统设置 > 性能设置 > 高级 > 虚拟内存更改**,适当调高大小。 6. **检查第三方插件冲突** - 进入**工具 > 扩展和更新**,禁用所有第三方插件(如ReSharper),重启VS后测试编译。 7. **系统兼容性与权限** - 以管理员身份运行VS2013- 检查系统区域设置(如引用[1]提及的字符编码问题),确保系统语言与项目编码一致(如UTF-8)[^1]。 8. **重新安装VS2013** - 若以上方法无效,通过控制面板卸载VS2013后,重新安装并更新至最新补丁。 --- ### 相关问题 1. **如何排查Visual Studio编译器内部错误的根本原因?** 2. **VS2013项目迁移到更高版本时需要注意哪些兼容性问题?** 3. **C++项目中如何优化模板代码以减少编译错误?** 4. **虚拟内存设置对大型项目编译有何影响?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值