文章目录
- 概述
- 编译期(Compile)
- 查看预处理后的文件
- 查看obj文件
- 开启编译器调试优化
- 链接期(Linking)
- 报错信息概述
- 自定义入口点
- 调试
- 内存窗口
- 值转16进制查看
- 查看汇编代码
- 注意
概述
记录一下Cherno的vs配置下载地址
https://thecherno.com/vs/
C++源码到可执行几个阶段
- 预处理 (Preprocessing)
- 编译 (Compilation)
- 汇编 (Assembly)
- 链接 (Linking)
编译期(Compile)
修改项目properties后输出文件需要重新编译使用Ctrl+F7
注意:Ctrl+F7只做该文件编译不做链接
查看预处理后的文件
// Multipy.cpp
int Multipy(int a, int b) {int result = a * b;return result;
}

使用Ctrl+F7编译main.cpp

查看obj文件

生成Multipy.asm
将二进制obj文件变为可读

开启编译器调试优化

就发现生成的Multipy.asm变小了
编译报错
1>cl : Command line error D8016: '/O2' and '/RTC1' command-line options are incompatible
图示位置设置为default
这只是编译器插入以帮助我们进行调试的代码

链接期(Linking)
cpp源文件加载成可执行文件的过程
报错信息概述
使用Ctrl+F7编译这个文件
这个cpp中return a*b缺少;

1>c:\projects\project1\project1\main.cpp(9): error C2143: syntax error: missing ';' before '}'
C2143:C标记编译器出错,后面是错误码
我们改正;报错后重试

1>C:\Project1\Debug\Project1.exe : fatal error LNK1120: 1 unresolved externals
LNK1120:LNK标记链接出错,后面是错误码
自定义入口点
配置的是Application,exe中会有一个入口点

在EntryPoint设置入口点可以不是main函数

调试
内存窗口

值转16进制查看

查看汇编代码

注意
项目建议不要放C盘,有可能出现 Linking Error 无法写入错误