C++项目开发编译踩坑记录

git工具配置了autocrlf=input下载的代码换行符默认从CRLF转换为LF,导致在windows桌面开发时,编译C++代码全文报语法错误

问题现象:使用git clone命令从库上下载下来的代码,使用VS 2022编译,全文报语法错误,但是代码他其他同事电脑上都能正常编译通过。

期间一度以为是本人电脑上的C++编译环境配置有问题,尝试过卸载掉VS软件重新安装、新增安装VS组件等的方式,最后都无法解决问题,故排除编译环境,问题出现在本地代码本身上。

问题原因:本人在搞安卓开发工作时,为解决代码提交中换行符不统一问题,做过一个配置,目的是将下载的代码中换行符统一转换为LF,配置方式为在.gitconfig中增加如下信息:

core

autocrlf = input

因此,此时git clone后checkout出的本地代码,换行符都将为LF,可通过任一IDE打开代码文件,在页面右下角可看到当前代码文件的换行符编码格式。也可以通过notepad++开发,设置显示换行符,就可以看到每行的换行符到底是什么了。

linux文件的换行符是\n字符(LF),而windows文件的换行符是\r\n两个字符(CRLF)。

对于一个跨平台的C++项目,需要保证编译linux平台产物时换行符为LF,编译windows平台产物时换行符切换为CRLF。

而对于windows桌面应用开发而言,C++代码最后的换行符为LF将导致代码被识别为语法错误,无法编译。

参考:git core.autocrlf 跨平台协作编码问题

解决方法:将input修改为true,或者在.gitconfig中直接删掉此配置信息。

如何使用VS IDE软件解析dmp文件查看代码调用栈

  1. 将dmp文件拖到VS IDE软件窗口;
  2. 配置符号路径:点击页面中配置符号路径按钮,将dll动态库所对应的配套pdb文件所在路径正确配置到调试器的符号路径中;(注意也要选择Microsoft符号服务器选项)
  3. 点击"使用仅限本机进行调试"按钮启动调试;
  4. 调试过程中可能会自动下载Microsoft的dll二进制,请保持网络畅通;
  5. 调试完成后,会在窗口显示dmp错误信息和调用栈信息。
相关推荐
承渊政道5 分钟前
C++学习之旅【C++类和对象(上)】
c语言·c++·学习·编辑器
Yupureki6 分钟前
《算法竞赛从入门到国奖》算法基础:入门篇-高精度
c语言·数据结构·c++·算法·visual studio
行云流水200019 分钟前
青少年编程考级覆盖哪些科目?图形化Python C++全包含
开发语言·c++·青少年编程
小尧嵌入式23 分钟前
在windows上安装ffmpeg及新版ffmpeg命令
c++·windows·算法·ffmpeg
boss-dog31 分钟前
Moveit2使用说明(C++)
c++·ros2·moveit2
Source.Liu1 小时前
【学写LibreCAD】Win11下在MSYS2 UCRT64环境中搭建Qt+Rust混合开发环境(VSCode)完整笔记
c++·qt·rust
_OP_CHEN1 小时前
【从零开始的Qt开发指南】(八)Qt 常用控件之显示类控件(上):Label 与 LCD Number 实战指南
开发语言·c++·qt·前端开发·图形化界面·qt常用控件·企业级组件
Yupureki1 小时前
《算法竞赛从入门到国奖》算法基础:入门篇-模拟
c语言·数据结构·c++·算法·visual studio
仰泳的熊猫1 小时前
1081 Rational Sum
数据结构·c++·算法·pat考试
程序猿编码1 小时前
用 C++ 玩转字符级 Transformer 语言模型:从原理到实现
开发语言·c++·深度学习·语言模型·transformer