问题解决:error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”

一、引言

最近在编译运行有关 cef 的项目的时候,发现总会出现这样的编译问题:

libcef_dll_wrapper13d.lib(process_message_ctocpp.obj) : error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”(HTMLEventHandler.obj 中)

这里,我要编译的项目的原来的编译平台是 Visual Studio 2013(即宏 _MSC_VER = 1800),而我正在使用的 IDE 是 Visual Studio 2017(即宏 _MSC_VER = 1900),出错信息很明确的指出了,当前的编译平台工具集并不匹配。

为什么这里不能兼容呢? Visual Studio 难道没有做到向下兼容吗?

于是我又尝试了下 Visual Studio 2010,结果也不能通过编译。

这下这就是一个有趣的问题了。

二、认识 _MSC_VER

想要探讨这个问题,首先要明白宏 _MSC_VER 的意义是什么:

_MSC_VER 是微软公司推出的 C/C++ 编译器在 ANSI/ISO C99 标准之外i扩展的宏定义,用来定义当前微软公司自己的编译器的主版本。需要注意的是,这并不是 Visual Studio 的版本号,也不是 Visual C++ 的版本号。

至于每个 Visual Studio 对应了值为多少的 _MSC_VER,可以查看这个网址:

_MSC_VER

现在,我们了解到了,宏 _MSC_VER 表明了当前项目的编译器的主版本。

那么为什么不能

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值