Cmake MSVC error C2065:未声明的标识符

文章发布时间:

最后更新时间:

文章总字数:
199

预计阅读时间:
1 分钟

页面浏览: 加载中...

问题描述

cmakeMSVC工具链编译C++程序的时候出现了C2065:未声明的标识符的报错。此前使用minGW的时候没有过这样的报错。

报错原因

问题是由于源文件的字符编码不兼容导致的。MSVC 默认使用ANSI 编码(如 GB2312 或 Shift-JIS)解析源文件,而源代码可能是UTF-8编码的,这就导致了 C2065(未声明的标识符)等错误,特别是当代码中包含非 ASCII 字符(如中文注释、字符串常量等)时。

解决方法

在CmakeLists增加:

1
2
3
4
5
6
7

if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")

​ add_compile_options(/source-charset:utf-8 /execution-charset:utf-8)

endif()

这样就能强制 MSVC 以 UTF-8 解析代码,避免了字符编码问题引起的未声明标识符错误。