文章目录
- 概述
- 编译期(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 无法写入错误