MSVC编译-C2065未声明的标识符C3536初始化之前无法使用C2059语法错误C2062意外的类型C2664无法从X转换为X

在使用Cmake进行项目编译时,从MinGW切换到MSVC编译器遇到了诸如未声明标识符、类型错误等报错。问题源于文件行尾序列(LF/CRLF)不一致和文件编码格式的不同。通过统一将所有文件行尾改为CRLF并保存,以及确保文件编码为UTF-8,成功解决了编译错误,最终能够正常生成dll和lib文件。

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

1. 前述

  • 使用 Cmake 编译一个项目,之前一直使用的是 MinGW 编译器,因为其它需要要求使用 MSVC 编译,但出现如下报错内容:
... 
error C2065: “mTime”: 未声明的标识符 
error C3536: “tp”: 初始化之前无法使用 
error C2664: note: 原因如下: 无法从“int”转换为
error C2059: 语法错误:)error C2062: 意外的类型“float” 
error C2065: “cameraMatrixPtr”: 未声明的标识符 
error C2317: 在行“242”上开始的“try”块没有 catch 处理程序 
error C2065: “js_”: 未声明的标识符 
error C2181: 没有匹配 if 的非法 else              
error C2065: “ret”: 未声明的标识符 
error C2065: “ret”: 未声明的标识符 
...                  

2. 解决

  • 使用的是VScode,可以看到同一工程里面不同文件的行尾序列(LF/CRLF:换行/回车换行)、文件编码均不一样。

NULL
NULL

  • 如图所示,更改所有文件行尾序列为 CRLF,注意保存文件。
    null

  • 重新编译成功,生成 dll 和 lib,正常使用。
    NULL

3. 其它(可选)

  • 修改所有文件编码为 UTF-8。
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值