当前位置: 首页 > news >正文

C++安装使用eigen库时出现warning C4819问题的解决方案

C++安装使用eigen库时出现warning C4819问题的解决方案

问题描述

在某个c++工程开发的时候,我使用CMake和vcpkg安装了eigen库,编译器是MSVC,但是出现如图所示的报错
在这里插入图片描述
文字内容是

warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss

表示几个Eigen库中的文件中出现了字符无法显示的问题。

问题研究

查阅微软官方文档,表示是编码格式的问题,建议使用utf-8编码格式。

问题解决

由于是warning而不是error,所以可以不去管他,也可以在camke中直接屏蔽这个warning,但是这属于治标不治本的方法,所以经过研究,使用以下方法是可行的。

第一步

CMakeLists.txt文件中,添加一行内容

if(MSVC)add_compile_options(/utf-8)  # 告诉 MSVC 使用 UTF-8 编码处理源文件
endif()

然而这一步可能能够解决问题,也可能解决不了问题。

第二步

因为如果项目中的一些文件例如main.cpp文件是使用gbk编码的,仍然可能出现这个报警,所以需要将项目中的所有文件都设置为utf-8编码格式,这样才能解决问题。

使用vscode设置的具体方法为,打开某个文件,查看右下角
在这里插入图片描述

然后点击这个gbk,然后会再vscdoe正中上方弹出一个选项框,选择Save with Encoding

在这里插入图片描述

然后输入utf8,点击选择utf-8
在这里插入图片描述

第三步

经过前两步之后,一般都没有什么问题了,然而,这时候仍然可能出现warning,这一步具体是怎么回事我还没有搞清楚,留个坑以后补充。

附录

vscode在变更文件编码格式的时候,Reopen with EncodingSave with Encoding两种方式的区别

在这里插入图片描述

Reopen with Encoding

如果使用Reopen with Encoding,那么文件的原始字节内容没有被改变,而对这个文件的编码格式改变了。
所以,如果一个文件原始是gbk格式,使用Reopen with Encoding之后用utf8打开,那么显示在你面前的很可能是乱码的。

例如,一个原始文件gbk格式的,内容是汉字“我”,其字节内容是CED2,那么使用Reopen with Encoding之后用utf8打开就变成了字符“��”,但其字节内容仍然是CED2

Save with Encoding

如果使用Save with Encoding,那么vscode在这里为了保证内容正确不乱码,进行了转码。

例如,一个原始文件gbk格式的,内容是汉字“我”,原始字节内容是CED2,那么使用Save with Encoding之后用utf8打开仍然是汉字“我”,而原始的字节内容进行了改变,变成了’E68891’。

http://www.dtcms.com/a/326274.html

相关文章:

  • 【网络运维】Linux:LNMP 项目实践
  • NodeJs》》url地址参数 解析 URLSearchParams querystring
  • vscode的wsl环境,怎么打开linux盘的工程?
  • CSS彩虹七色十六进制值
  • langmem
  • 排序与查找,简略版
  • 《算法导论》第 18 章 - B 树
  • linux 秒 安装谷歌浏览器 区分ubuntu和centos 给python爬取网站使用
  • Haystack:面向大模型应用的模块化检索增强生成(RAG)框架
  • 简单Modules 的配置与管理,灵活应对多版本软件环境的需求。
  • 基于SpringBoot+Uniapp的血压监控小程序(Echarts图形化分析)
  • C++进阶:C++11(2)
  • 应用层模拟面试题
  • 【Jmeter】两个函数拼接
  • IPCP(IP Control Protocol,IP控制协议)
  • 李宏毅2025《机器学习》-第十讲:AI“思想钢印”:深入解析大模型的知识编辑技术
  • docter的使用、vscode(cursor)和docker的连接,详细分析说明
  • (一)vscode搭建espidf环境
  • react路由跳转与路由懒加载等(对照vue来说一说不同之处)
  • 前端开发:React(3)—— 组件运作和事件处理
  • 【论文阅读】BEVFormer论文解析及Temporal Self-Attention、Spatial Cross-Attention注意力机制详解及代码示例
  • 如何平衡短期与长期需求
  • PCIE 设备百科
  • 【运维进阶】LAMPLNMP 最佳实践
  • MPXxx6115A Series的概述以及 MPXxx6115A series 用OSS-ECAL的提供情况
  • Pytest 全流程解析:执行机制与报告生成实战指南
  • html转成markdown(1.0.0)
  • Eino中的两种应用模式:“单独使用”和“在编排中使用”
  • ZKmall开源商城多商户架构:平衡管理与运营的技术方案
  • 【lucene】livedocs描述