VS c++错误提示解决方案记录

目录

error LNK2005: _XXX已经在xxx.obj中定义

出现原因

解决方法

 error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型

出现原因

解决方法

STL1003: Unexpected compiler, expected C++ compiler

出现原因

解决方法

 error C2039:  "wait_for" 不是 "winrt::impl" 的成员  

出现原因

解决方法

error C2872: “byte”: 不明确的符号

出现原因

解决方法


持续更新中......

error LNK2005: _XXX已经在xxx.obj中定义

出现原因

        项目中有多个源文件或者头文件时,include得太多太杂,导致有些变量重复定义。

解决方法

  1. 找出重复定义的变量位置,并修改。
  2. 忽略第二次定义的提示,继续运行,设置如下:   

         右键项目名称->属性->配置属性->链接器->命令行 中添加代码"/FORCE:MULTIPLE"即可。

 error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型

出现原因

        由于编译器SDL安全检查认为这一操作(通常是为无符号整形取负的操作)无效而产生的。

解决方法

        右键项目名称->属性->C/C++->常规:SDL检查,选择否

STL1003: Unexpected compiler, expected C++ compiler

出现原因

        在C文件中引用了C++的头文件。

解决方法

        头文件引用错误,重新引用头文件

 error C2039:  "wait_for" 不是 "winrt::impl" 的成员  

出现原因

        Windows SDK 中附带的 C++/WinRT 版本相当旧,无法按照较新的编译器的更严格的一致性期望进行编译。

解决方法

        方法一、将符合模式改为 否 (/permissive),然后重新编译.

       

        方法二、更新WinRT 右键项目名称->管理NuGet程序包...-> 输入 "Microsoft.Windows.CppWinRT"->安装

error C2872: “byte”: 不明确的符号

 

出现原因

        C++17引入了类型std::byte,代码中使用了using namespace std 与原C++定义的unsigned char byte冲突;或者其它重名冲突。C++17还引进了std::array ,std::size,也会导致同样的问题。

解决方法

        方法一、如果代码中加了using namespace std ,可以将它移除;

        方法二、更改C++

        方法三、添加宏 _HAS_STD_BYTE 0 ,如下

#ifdef _HAS_STD_BYTE
#undef _HAS_STD_BYTE
#endif
#define _HAS_STD_BYTE 0

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值