Преглед изворни кода

张永攀推送

zhangyongpan
永攀 张 пре 6 дана
комит
dac353a252
100 измењених фајлова са 1212 додато и 0 уклоњено
  1. +233
    -0
      张永攀/IAR/IAR.md
  2. BIN
      张永攀/IAR/pictures/image-20250708105919518.png
  3. BIN
      张永攀/IAR/pictures/image-20250708110035222.png
  4. BIN
      张永攀/IAR/pictures/image-20250708111507961.png
  5. BIN
      张永攀/IAR/pictures/image-20250708121915830.png
  6. BIN
      张永攀/IAR/pictures/image-20250708122510344.png
  7. BIN
      张永攀/IAR/pictures/image-20250708130710152.png
  8. BIN
      张永攀/IAR/pictures/image-20250708131625603.png
  9. BIN
      张永攀/IAR/pictures/image-20250708131723796.png
  10. BIN
      张永攀/IAR/pictures/image-20250708132123605.png
  11. BIN
      张永攀/IAR/pictures/image-20250708132202198.png
  12. BIN
      张永攀/IAR/pictures/image-20250708133445445.png
  13. BIN
      张永攀/IAR/pictures/image-20250708133903502.png
  14. BIN
      张永攀/IAR/pictures/image-20250708134300137.png
  15. BIN
      张永攀/IAR/pictures/image-20250708134436504.png
  16. BIN
      张永攀/IAR/pictures/image-20250710091818054.png
  17. BIN
      张永攀/IAR/pictures/image-20250710092248669.png
  18. BIN
      张永攀/IAR/pictures/image-20250710092312114.png
  19. BIN
      张永攀/IAR/pictures/image-20250710093412062.png
  20. BIN
      张永攀/IAR/pictures/image-20250710093743862.png
  21. BIN
      张永攀/IAR/pictures/image-20250710094113043.png
  22. BIN
      张永攀/IAR/pictures/image-20250710094215522.png
  23. BIN
      张永攀/IAR/pictures/image-20250710094231504.png
  24. BIN
      张永攀/IAR/pictures/image-20250710094730465.png
  25. BIN
      张永攀/IAR/pictures/image-20250710094911134.png
  26. BIN
      张永攀/IAR/pictures/image-20250710095007025.png
  27. BIN
      张永攀/IAR/pictures/image-20250710095042138.png
  28. BIN
      张永攀/IAR/pictures/image-20250710095309962.png
  29. BIN
      张永攀/IAR/pictures/image-20250710095421681.png
  30. BIN
      张永攀/IAR/pictures/image-20250710095527566.png
  31. BIN
      张永攀/IAR/pictures/image-20250710095633035.png
  32. BIN
      张永攀/IAR/pictures/image-20250710095744008.png
  33. BIN
      张永攀/IAR/pictures/image-20250710095806305.png
  34. BIN
      张永攀/IAR/pictures/image-20250710095819062.png
  35. BIN
      张永攀/IAR/pictures/image-20250710095832140.png
  36. BIN
      张永攀/IAR/pictures/image-20250710184018484.png
  37. BIN
      张永攀/IAR/pictures/image-20250710184515203.png
  38. BIN
      张永攀/IAR/pictures/image-20250710184547839.png
  39. BIN
      张永攀/IAR/pictures/image-20250710184648034.png
  40. BIN
      张永攀/IAR/pictures/image-20250710185020725.png
  41. BIN
      张永攀/IAR/pictures/image-20250710185213899.png
  42. BIN
      张永攀/IAR/pictures/image-20250710185351540.png
  43. BIN
      张永攀/IAR/pictures/image-20250710185636976.png
  44. +281
    -0
      张永攀/Library/Library.md
  45. BIN
      张永攀/Library/pictures/image-20250709185110253.png
  46. BIN
      张永攀/Library/pictures/image-20250709190120328.png
  47. BIN
      张永攀/Library/pictures/image-20250709190224585.png
  48. BIN
      张永攀/Library/pictures/image-20250709191259138.png
  49. BIN
      张永攀/Library/pictures/image-20250709191548096.png
  50. BIN
      张永攀/Library/pictures/image-20250709191834414.png
  51. BIN
      张永攀/Library/pictures/image-20250709192153729.png
  52. BIN
      张永攀/Library/pictures/image-20250709192522012.png
  53. BIN
      张永攀/Library/pictures/image-20250709194558852.png
  54. BIN
      张永攀/Library/pictures/image-20250709195039852.png
  55. BIN
      张永攀/Library/pictures/image-20250709195529752.png
  56. BIN
      张永攀/Library/pictures/image-20250710102828844.png
  57. BIN
      张永攀/Library/pictures/image-20250710103417243.png
  58. BIN
      张永攀/Library/pictures/image-20250710103520461.png
  59. BIN
      张永攀/Library/pictures/image-20250710104736756.png
  60. BIN
      张永攀/Library/pictures/image-20250710105048084.png
  61. BIN
      张永攀/Library/pictures/image-20250710105215199.png
  62. BIN
      张永攀/Library/pictures/image-20250710123819771.png
  63. BIN
      张永攀/Library/pictures/image-20250710124000084.png
  64. BIN
      张永攀/Library/pictures/image-20250710124140907.png
  65. BIN
      张永攀/Library/pictures/image-20250710124556617.png
  66. BIN
      张永攀/Library/pictures/image-20250710124711322.png
  67. BIN
      张永攀/Library/pictures/image-20250710125301402.png
  68. BIN
      张永攀/Library/pictures/image-20250710130734676.png
  69. BIN
      张永攀/Library/pictures/image-20250710195629035.png
  70. +290
    -0
      张永攀/MarkDown/Typora.md
  71. BIN
      张永攀/MarkDown/assets/icon256-1751871393146-5-1751871396237-7.png
  72. BIN
      张永攀/MarkDown/assets/icon256-1751871393146-5.png
  73. BIN
      张永攀/MarkDown/assets/icon256.png
  74. BIN
      张永攀/MarkDown/pictures/icon256.png
  75. +68
    -0
      张永攀/SourceInsight/SourceInsight.md
  76. BIN
      张永攀/SourceInsight/pictures/image-20250708144042474.png
  77. BIN
      张永攀/SourceInsight/pictures/image-20250708152237774.png
  78. BIN
      张永攀/SourceInsight/pictures/image-20250708152600062.png
  79. BIN
      张永攀/SourceInsight/pictures/image-20250708154814072.png
  80. BIN
      张永攀/SourceInsight/pictures/image-20250708161124106.png
  81. BIN
      张永攀/SourceInsight/pictures/image-20250708161934639.png
  82. BIN
      张永攀/SourceInsight/pictures/image-20250710161700362.png
  83. BIN
      张永攀/SourceInsight/pictures/image-20250711081727965.png
  84. BIN
      张永攀/SourceInsight/pictures/image-20250711081933389.png
  85. BIN
      张永攀/SourceInsight/pictures/image-20250711082234185.png
  86. +100
    -0
      张永攀/UnitTest/UnitTestVisualStudio.md
  87. BIN
      张永攀/UnitTest/pictures/image-20250709155454475.png
  88. BIN
      张永攀/UnitTest/pictures/image-20250709170003432.png
  89. BIN
      张永攀/UnitTest/pictures/image-20250709170046904.png
  90. BIN
      张永攀/UnitTest/pictures/image-20250710135748248.png
  91. BIN
      张永攀/UnitTest/pictures/image-20250710135842421.png
  92. BIN
      张永攀/UnitTest/pictures/image-20250711142521042.png
  93. BIN
      张永攀/UnitTest/pictures/image-20250711142542564.png
  94. +240
    -0
      张永攀/VisualStudio/VisualStudio.md
  95. BIN
      张永攀/VisualStudio/pictures/image-20250709094808484.png
  96. BIN
      张永攀/VisualStudio/pictures/image-20250709094954912.png
  97. BIN
      张永攀/VisualStudio/pictures/image-20250709095131841.png
  98. BIN
      张永攀/VisualStudio/pictures/image-20250709095855890.png
  99. BIN
      张永攀/VisualStudio/pictures/image-20250709100041991.png
  100. BIN
      张永攀/VisualStudio/pictures/image-20250709100156150.png

+ 233
- 0
张永攀/IAR/IAR.md Прегледај датотеку

@@ -0,0 +1,233 @@
# IAR相关知识点

## 工程操作

### 各类型文件含义

- **.eww**:Embedded Workbench Workspace(嵌入式工作台工作空间文件)
用于管理多个工程(.ewp 文件)的集合,记录工程的组织方式和打开状态。
- **.ewp**:Embedded Workbench Project(嵌入式工作台工程文件)
是 IAR 项目的核心文件,包含工程的配置信息(如编译选项、目标芯片、文件列表等)。
- **.ewd**:Embedded Workbench Debugger Configuration(嵌入式工作台调试器配置文件)
存储调试相关的设置,如断点、监视变量、调试器连接参数等。
- **.c**:C Source File(C 语言源文件)
通用的 C 语言源代码文件,并非 IAR 专属,所有 C 语言开发环境均可识别。
- **.dep**:Dependency File(依赖文件)
记录源文件之间的依赖关系(如头文件引用),用于编译系统判断文件是否需要重新编译。
- **.ewt**:Embedded Workbench Template(嵌入式工作台模板文件)
用于存储工程或文件的模板配置,方便快速创建具有相同设置的新项目。
- **.s** 或 **.asm**:Assembly Source File(汇编源文件)
包含汇编语言代码,用于编写对性能要求极高或直接操作硬件的程序段。
- **.h**:Header File(头文件)
存储函数原型、宏定义和类型声明,用于在多个源文件间共享接口定义。
- **.out**:Output File(输出文件)
编译链接后生成的中间文件,通常包含可执行代码和符号信息,可用于进一步处理。

### 新建/打开工作区

![image-20250708105919518](./pictures/image-20250708105919518.png)

### 新建/打开工程

![image-20250708110035222](./pictures/image-20250708110035222.png)

### 工作区中导入/添加工程

![image-20250708111507961](./pictures/image-20250708111507961.png)

### 新建分组

![image-20250708121915830](./pictures/image-20250708121915830.png)

### 新建/打开文件

![image-20250708122510344](./pictures/image-20250708122510344.png)

### 工程目录与文件目录的关系

工程目录就是像linux里面的软连接,实际文件还是存在他自己的地方,

## 工程配置

在工程文件中选择右键 选择`options`->`General options`->`target`->`Device`选择自己电脑所用的架构

![image-20250708130710152](./pictures/image-20250708130710152.png)

## 编译配置

### 优化等级

选择上述图片里面的`C/C++ Compiler`->`Optimizations` [说明地址](https://www.bmrtech.com/Tech/tech_show/50.html)

![image-20250708131625603](./pictures/image-20250708131625603.png)

### 硬件浮点

![image-20250708132202198](./pictures/image-20250708132202198.png)

### 预处理

选择`options`->`C/C++ Compiler`->`preprocessor`

![image-20250710184018484](./pictures/image-20250710184018484.png)

### 链接文件

选择`options`->`Linker`->`linker configuration file` 链接脚本控制内存分配(Flash/ROM、RAM 布局)关键硬件相关文件

![image-20250708133445445](./pictures/image-20250708133445445.png)



### 文件路径配置

选择`options`->`C/C++ Compiler`->`preprocessor`

![image-20250710184547839](./pictures/image-20250710184547839.png)

### 输出文件配置

选择`options`->`Output Converter`选择生成的文件格式和文件名称

![image-20250708133903502](./pictures/image-20250708133903502.png)

### 输出文件路径配置

点击`options`>`General Optons`>`Output`

![image-20250710184648034](./pictures/image-20250710184648034.png)

## 调试器配置

选择`options`->`Debugger`选择要烧录进单片机的方式

![image-20250708134300137](./pictures/image-20250708134300137.png)

## 库相关配置

`options`->`General options`->`Liabrary Configuration`

![image-20250708134436504](./pictures/image-20250708134436504.png)

## 静态库的封装

创建一个项目,编写好函数,右键项目`options`->`General options`->`Output`选择生成的文件是Library

![image-20250710091818054](./pictures/image-20250710091818054.png)



2. 如果要屏蔽不想生成的文件可以把`Exclude from build`

![image-20250710092312114](./pictures/image-20250710092312114.png)

3. 选择生成的路径

![image-20250710185020725](./pictures/image-20250710185020725.png)

4. 编译生成

![image-20250710185213899](./pictures/image-20250710185213899.png)

## 静态库的调用

1. 配置静态库的路径

点击`Options`>`Linker `选择静态库的路径

![image-20250710185351540](./pictures/image-20250710185351540.png)

2. 编写代码验证

![image-20250710185636976](./pictures/image-20250710185636976.png)

## 工程调试



### 断点

#### 设置断点,删除断点

在侧边栏直接点一下出现红点即代表添加断点成功,再点一点即可取消断点

![image-20250710093412062](./pictures/image-20250710093412062.png)

#### 禁用断点,启用断点

左键断点选择`Enable/disable Breakpoint`

![image-20250710093743862](./pictures/image-20250710093743862.png)

#### 条件断点

右键断点选中`Edit Breakpoint`

![image-20250710094113043](./pictures/image-20250710094113043.png)

设置i == 5触发断点

![image-20250710094231504](./pictures/image-20250710094231504.png)

当i == 5时命中断点

![image-20250710094730465](./pictures/image-20250710094730465.png)

### 监控信息

点击`View`>`Watch`

![image-20250710094911134](./pictures/image-20250710094911134.png)

### 寄存器信息

点击`View`>`Register`

![image-20250710095007025](./pictures/image-20250710095007025.png)

### 内存信息

点击`View`>`Memory`

![image-20250710095042138](./pictures/image-20250710095042138.png)

### 栈信息

点击`View`>`Stack`

![image-20250710095309962](./pictures/image-20250710095309962.png)

### 汇编信息

点击`View`>`Disassembly`

![image-20250710095421681](./pictures/image-20250710095421681.png)

### 调用堆栈信息

点击`View`>`Call Stack`

![image-20250710095527566](./pictures/image-20250710095527566.png)



![image-20250710095633035](./pictures/image-20250710095633035.png)

### 单步调试

#### 逐过程

![image-20250710095744008](./pictures/image-20250710095744008.png)

#### 逐语句

![image-20250710095806305](./pictures/image-20250710095806305.png)

#### 复位

![image-20250710095819062](./pictures/image-20250710095819062.png)

#### 跳出

![image-20250710095832140](./pictures/image-20250710095832140.png)


BIN
张永攀/IAR/pictures/image-20250708105919518.png Прегледај датотеку

Before After
Width: 411  |  Height: 733  |  Size: 71 KiB

BIN
张永攀/IAR/pictures/image-20250708110035222.png Прегледај датотеку

Before After
Width: 370  |  Height: 976  |  Size: 93 KiB

BIN
张永攀/IAR/pictures/image-20250708111507961.png Прегледај датотеку

Before After
Width: 376  |  Height: 1044  |  Size: 108 KiB

BIN
张永攀/IAR/pictures/image-20250708121915830.png Прегледај датотеку

Before After
Width: 783  |  Height: 946  |  Size: 85 KiB

BIN
张永攀/IAR/pictures/image-20250708122510344.png Прегледај датотеку

Before After
Width: 703  |  Height: 771  |  Size: 62 KiB

BIN
张永攀/IAR/pictures/image-20250708130710152.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1540  |  Size: 241 KiB

BIN
张永攀/IAR/pictures/image-20250708131625603.png Прегледај датотеку

Before After
Width: 966  |  Height: 882  |  Size: 144 KiB

BIN
张永攀/IAR/pictures/image-20250708131723796.png Прегледај датотеку

Before After
Width: 966  |  Height: 882  |  Size: 144 KiB

BIN
张永攀/IAR/pictures/image-20250708132123605.png Прегледај датотеку

Before After
Width: 966  |  Height: 882  |  Size: 126 KiB

BIN
张永攀/IAR/pictures/image-20250708132202198.png Прегледај датотеку

Before After
Width: 966  |  Height: 882  |  Size: 127 KiB

BIN
张永攀/IAR/pictures/image-20250708133445445.png Прегледај датотеку

Before After
Width: 966  |  Height: 882  |  Size: 109 KiB

BIN
张永攀/IAR/pictures/image-20250708133903502.png Прегледај датотеку

Before After
Width: 966  |  Height: 882  |  Size: 84 KiB

BIN
张永攀/IAR/pictures/image-20250708134300137.png Прегледај датотеку

Before After
Width: 1048  |  Height: 885  |  Size: 119 KiB

BIN
张永攀/IAR/pictures/image-20250708134436504.png Прегледај датотеку

Before After
Width: 1048  |  Height: 885  |  Size: 182 KiB

BIN
张永攀/IAR/pictures/image-20250710091818054.png Прегледај датотеку

Before After
Width: 966  |  Height: 849  |  Size: 84 KiB

BIN
张永攀/IAR/pictures/image-20250710092248669.png Прегледај датотеку

Before After
Width: 966  |  Height: 846  |  Size: 79 KiB

BIN
张永攀/IAR/pictures/image-20250710092312114.png Прегледај датотеку

Before After
Width: 966  |  Height: 846  |  Size: 79 KiB

BIN
张永攀/IAR/pictures/image-20250710093412062.png Прегледај датотеку

Before After
Width: 2146  |  Height: 1045  |  Size: 51 KiB

BIN
张永攀/IAR/pictures/image-20250710093743862.png Прегледај датотеку

Before After
Width: 402  |  Height: 736  |  Size: 80 KiB

BIN
张永攀/IAR/pictures/image-20250710094113043.png Прегледај датотеку

Before After
Width: 451  |  Height: 915  |  Size: 130 KiB

BIN
张永攀/IAR/pictures/image-20250710094215522.png Прегледај датотеку

Before After
Width: 844  |  Height: 703  |  Size: 56 KiB

BIN
张永攀/IAR/pictures/image-20250710094231504.png Прегледај датотеку

Before After
Width: 844  |  Height: 703  |  Size: 56 KiB

BIN
张永攀/IAR/pictures/image-20250710094730465.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1540  |  Size: 212 KiB

BIN
张永攀/IAR/pictures/image-20250710094911134.png Прегледај датотеку

Before After
Width: 489  |  Height: 981  |  Size: 109 KiB

BIN
张永攀/IAR/pictures/image-20250710095007025.png Прегледај датотеку

Before After
Width: 633  |  Height: 1014  |  Size: 138 KiB

BIN
张永攀/IAR/pictures/image-20250710095042138.png Прегледај датотеку

Before After
Width: 580  |  Height: 997  |  Size: 124 KiB

BIN
张永攀/IAR/pictures/image-20250710095309962.png Прегледај датотеку

Before After
Width: 498  |  Height: 972  |  Size: 108 KiB

BIN
张永攀/IAR/pictures/image-20250710095421681.png Прегледај датотеку

Before After
Width: 343  |  Height: 981  |  Size: 82 KiB

BIN
张永攀/IAR/pictures/image-20250710095527566.png Прегледај датотеку

Before After
Width: 351  |  Height: 961  |  Size: 83 KiB

BIN
张永攀/IAR/pictures/image-20250710095633035.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1540  |  Size: 459 KiB

BIN
张永攀/IAR/pictures/image-20250710095744008.png Прегледај датотеку

Before After
Width: 420  |  Height: 162  |  Size: 25 KiB

BIN
张永攀/IAR/pictures/image-20250710095806305.png Прегледај датотеку

Before After
Width: 457  |  Height: 192  |  Size: 22 KiB

BIN
张永攀/IAR/pictures/image-20250710095819062.png Прегледај датотеку

Before After
Width: 535  |  Height: 210  |  Size: 30 KiB

BIN
张永攀/IAR/pictures/image-20250710095832140.png Прегледај датотеку

Before After
Width: 669  |  Height: 205  |  Size: 35 KiB

BIN
张永攀/IAR/pictures/image-20250710184018484.png Прегледај датотеку

Before After
Width: 966  |  Height: 882  |  Size: 172 KiB

BIN
张永攀/IAR/pictures/image-20250710184515203.png Прегледај датотеку

Before After
Width: 966  |  Height: 882  |  Size: 172 KiB

BIN
张永攀/IAR/pictures/image-20250710184547839.png Прегледај датотеку

Before After
Width: 966  |  Height: 882  |  Size: 172 KiB

BIN
张永攀/IAR/pictures/image-20250710184648034.png Прегледај датотеку

Before After
Width: 966  |  Height: 882  |  Size: 109 KiB

BIN
张永攀/IAR/pictures/image-20250710185020725.png Прегледај датотеку

Before After
Width: 966  |  Height: 849  |  Size: 56 KiB

BIN
张永攀/IAR/pictures/image-20250710185213899.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1540  |  Size: 142 KiB

BIN
张永攀/IAR/pictures/image-20250710185351540.png Прегледај датотеку

Before After
Width: 966  |  Height: 849  |  Size: 117 KiB

BIN
张永攀/IAR/pictures/image-20250710185636976.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1540  |  Size: 468 KiB

+ 281
- 0
张永攀/Library/Library.md Прегледај датотеку

@@ -0,0 +1,281 @@
# 库相关知识点
## 静态库
### 静态库的基本概念

静态库(Static Library)是一种预先编译好的程序代码集合,以独立文件形式存在,供其他程序在编译时链接使用。它将多个目标文件(.o 或 .obj)打包为单一文件,简化了程序开发和部署流程。

### 核心特点

1. **编译时链接**
链接器在编译阶段将静态库中的代码完整复制到可执行文件中,运行时无需依赖外部库文件。
2. **独立性**
生成的可执行文件不依赖外部库,便于在不同环境中部署,但会导致文件体积增大。
3. **格式差异**
- **Windows**:通常以 `.lib` 为扩展名
- **Unix/Linux/macOS**:使用 `.a`(archive)扩展名

### 静态库的生成

使用vs2022选择`C++`的`静态库`创建

![image-20250709185110253](./pictures/image-20250709185110253.png)

写完代码,点击生成即可生产`.lab`文件

![image-20250709190120328](./pictures/image-20250709190120328.png)

![image-20250709190224585](./pictures/image-20250709190224585.png)

### 静态库的调用

#### 在工程配置中调用

1. 配置静态库的头文件选择`属性`>`C/C++`>`附加包含目录`将头文件目录配置上去

![image-20250709191548096](./pictures/image-20250709191548096.png)

2. 配置静态库的所在位置,选择`属性`>`链接器`>`常规`>`附加库目录`配置其所在路径

![image-20250709191834414](./pictures/image-20250709191834414.png)

3. 配置静态库的所在位置,选择`属性`>`链接器`>`输入`>`附加依赖项`配置其名字

![image-20250709192153729](./pictures/image-20250709192153729.png)

4. 可以直接使用`#include <StaticLib.h>`

![image-20250709192522012](./pictures/image-20250709192522012.png)

#### 在代码中语句加载lib调用

先把需要引用的头文件还有`.lib`文件放在一起

```C++
//第一行是引用头文件
//第二行是引用静态库
#include "C:\\Users\\徐加冠\\source\\repos\\LabTest\\x64\\Debug\\StaticLib.h"
#pragma comment(lib,"C:\\Users\\徐加冠\\source\\repos\\LabTest\\x64\\Debug\\StaticLib.lib")
```

![image-20250709191259138](./pictures/image-20250709191259138.png)

## 动态库
### 动态库的基本概念

动态库(Dynamic Library)是一种在程序运行时才被链接和加载的共享库文件,包含可被多个程序同时使用的代码和数据。与静态库(Static Library)在编译时被完整嵌入到可执行文件中不同,动态库在运行时才被动态加载到内存,实现代码复用并减少内存占用。

### 核心特点

1. **共享加载**:多个程序可共享同一份动态库实例,减少内存开销。
2. **运行时链接**:程序启动时才加载动态库,而非编译时,提高开发灵活性。
3. **独立更新**:动态库可独立于程序更新,无需重新编译整个程序。
4. 跨平台差异:
- Windows:以 `.dll`(Dynamic Link Library)为扩展名。
- Linux/macOS:以 `.so`(Shared Object)或 `.dylib`(Dynamic Library)为扩展名。

### 动态库的生成

#### 通过导出语句生成

1. 使用vs2022选择动态链接库创建空项目

![image-20250710102828844](./pictures/image-20250710102828844.png)

2. 分别添加头文件和源文件

头文件的导出语句

```C++
#pragma once
#ifndef BHDLL_d
#define BHDLL_d
//宏定义导出
#ifdef BHDLL__//如果没有定义DLLH 就定义 DLLH __declspec(dllexport)
#define BHDLL __declspec(dllexport)//导出
#else
#define BHDLL __declspec(dllimport)//导入
#endif // DLLH__//如果没有定义DLLH 就定义 DLLH
//编写代码区域
//导出函数
BHDLL int add(int a, int b);
BHDLL int sub(int a, int b);
//导出类
class BHDLL dllH
{
public:
int mul(int a, int b);
int div(int a, int b);
};
//以C语言方式导出函数:
extern "C"
{
BHDLL int Cadd(int a, int b);
BHDLL int Csub(int a, int b);
}
#endif
```

源文件代码

```C++
#include "BH_dll.h"
#include <iostream>
using namespace std;
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int dllH::mul(int a, int b)
{
return a * b;
}
int dllH::div(int a, int b)
{
return a / b;
}
int Cadd(int a, int b)
{
return a + b;
}
int Csub(int a, int b)
{
return a - b;
}
```

3. 修改项目属性改为dll动态库

![image-20250710103417243](./pictures/image-20250710103417243.png)

点击重新生成,即可生成动态链接库

![image-20250710103520461](./pictures/image-20250710103520461.png)



#### 通过模块文件生成

1. 使用vs2022创建一个空项目

![image-20250710104736756](./pictures/image-20250710104736756.png)

2. 创建一个源文件

```C++
#include "iostream"
void fun1()
{
std::cout << "fun1" << std::endl;
}
void fun2()
{
std::cout << "fun2" << std::endl;
}

```

3. 创建一个edf配置文件

```edf
LIBRARY "test"

EXPORTS
fun1
fun2
```

4. 修改项目的生成为.dll和输出的名字和上面`LIBRARY "test"`定义的名字要一致

![image-20250710105048084](./pictures/image-20250710105048084.png)

5. 定义模块文件的位置点击`链接器`>`输入`>`模块定义文件`

![image-20250710195629035](./pictures/image-20250710195629035.png)

6. 点击重新生成就可以生成

![image-20250710105215199](./pictures/image-20250710105215199.png)



### 动态库的调用

#### 在工程配置中调用

1. 点击项目属性配置其`C\C++`>`附加包含目录`,改成需要调用dll所在目录

![image-20250710123819771](./pictures/image-20250710123819771.png)

2. 点击`链接器`>`常规`>`附加库目录`

![image-20250710124000084](./pictures/image-20250710124000084.png)

3. 点击`链接器`>`输入`>`附加依赖项`输入调用名字

![image-20250710124140907](./pictures/image-20250710124140907.png)

4. 运行代码时需要把dll放在exe同文件夹下,不然会报错

![image-20250710124556617](./pictures/image-20250710124556617.png)

5. 放在相同目录下运行成功

![image-20250710124711322](./pictures/image-20250710124711322.png)



#### 在代码中语句加载lib调用

```C++
#include "D:\\桌面\\x64\\Debug\\DllMy.h"
#pragma comment(lib,"D:\\桌面\\x64\\Debug\\DllMy.lib")
```



![image-20250710125301402](./pictures/image-20250710125301402.png)



#### 在代码中语句加载dll调用

```C++
HINSTANCE Dll = LoadLibrary(L"test.dll");
if (Dll == NULL) {
std::cerr << "无法加载DLL! 错误码: " << GetLastError() << std::endl;
return 1;
}
typedef void (*Func)(); // 定义函数指针类型
Func add = (Func)GetProcAddress(Dll, "fun1");
add();
FreeLibrary(Dll);
return 0;
```

![image-20250710130734676](./pictures/image-20250710130734676.png)



ps:如果使用导出语句生成的dll,dll内部的函数名称和你定义的不一样,如果使用edf文件导出可以自定义函数名称




BIN
张永攀/Library/pictures/image-20250709185110253.png Прегледај датотеку

Before After
Width: 1536  |  Height: 1020  |  Size: 95 KiB

BIN
张永攀/Library/pictures/image-20250709190120328.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 223 KiB

BIN
张永攀/Library/pictures/image-20250709190224585.png Прегледај датотеку

Before After
Width: 1447  |  Height: 820  |  Size: 64 KiB

BIN
张永攀/Library/pictures/image-20250709191259138.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 263 KiB

BIN
张永攀/Library/pictures/image-20250709191548096.png Прегледај датотеку

Before After
Width: 1200  |  Height: 828  |  Size: 113 KiB

BIN
张永攀/Library/pictures/image-20250709191834414.png Прегледај датотеку

Before After
Width: 1200  |  Height: 828  |  Size: 96 KiB

BIN
张永攀/Library/pictures/image-20250709192153729.png Прегледај датотеку

Before After
Width: 1200  |  Height: 828  |  Size: 93 KiB

BIN
张永攀/Library/pictures/image-20250709192522012.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 325 KiB

BIN
张永攀/Library/pictures/image-20250709194558852.png Прегледај датотеку

Before After
Width: 1536  |  Height: 1020  |  Size: 96 KiB

BIN
张永攀/Library/pictures/image-20250709195039852.png Прегледај датотеку

Before After
Width: 465  |  Height: 886  |  Size: 28 KiB

BIN
张永攀/Library/pictures/image-20250709195529752.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 147 KiB

BIN
张永攀/Library/pictures/image-20250710102828844.png Прегледај датотеку

Before After
Width: 1536  |  Height: 1020  |  Size: 162 KiB

BIN
张永攀/Library/pictures/image-20250710103417243.png Прегледај датотеку

Before After
Width: 1200  |  Height: 828  |  Size: 57 KiB

BIN
张永攀/Library/pictures/image-20250710103520461.png Прегледај датотеку

Before After
Width: 1447  |  Height: 820  |  Size: 71 KiB

BIN
张永攀/Library/pictures/image-20250710104736756.png Прегледај датотеку

Before After
Width: 1536  |  Height: 1020  |  Size: 163 KiB

BIN
张永攀/Library/pictures/image-20250710105048084.png Прегледај датотеку

Before After
Width: 1200  |  Height: 828  |  Size: 56 KiB

BIN
张永攀/Library/pictures/image-20250710105215199.png Прегледај датотеку

Before After
Width: 1447  |  Height: 820  |  Size: 69 KiB

BIN
张永攀/Library/pictures/image-20250710123819771.png Прегледај датотеку

Before After
Width: 1200  |  Height: 828  |  Size: 91 KiB

BIN
张永攀/Library/pictures/image-20250710124000084.png Прегледај датотеку

Before After
Width: 1200  |  Height: 828  |  Size: 80 KiB

BIN
张永攀/Library/pictures/image-20250710124140907.png Прегледај датотеку

Before After
Width: 1200  |  Height: 828  |  Size: 65 KiB

BIN
张永攀/Library/pictures/image-20250710124556617.png Прегледај датотеку

Before After
Width: 1488  |  Height: 775  |  Size: 32 KiB

BIN
张永攀/Library/pictures/image-20250710124711322.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 280 KiB

BIN
张永攀/Library/pictures/image-20250710125301402.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 309 KiB

BIN
张永攀/Library/pictures/image-20250710130734676.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 287 KiB

BIN
张永攀/Library/pictures/image-20250710195629035.png Прегледај датотеку

Before After
Width: 1200  |  Height: 828  |  Size: 61 KiB

+ 290
- 0
张永攀/MarkDown/Typora.md Прегледај датотеку

@@ -0,0 +1,290 @@


<a id ="top"></a>

# Markdown相关知识点

# 标题相关

一级标题为1个#

二级标题为2个#

三级标题为3个#

例子:

# 这是一级标题

## 这是二级标题

### 这是三级标题

# 标号相关



## 无序标号

*/+/- + 空格 + 标题

* Part A

+ Part B

- Part C



## 有序标号

数字 + 英文句号 + 空格 + 标题

1. Part A
2. Part B
3. Part C



## 标号嵌套

回车之后按一个tab

### 有序嵌套有序

1. Part A
2. Part B
1. part B.A
2. Part B.B

3. Part C
1. Part C.A
2. Part C.B
1. Part C.B.A
2. Part C.B.B
4. Part D

### 无序嵌套无序

* 水果
* 苹果
* 香蕉
* 西瓜
* 蔬菜
* 根茎类
* 土豆
* 马铃薯
* 胡萝卜
* 叶子类
* 芹菜
* 菠菜
* 青菜

### 有序嵌套无序

1. 一级标题

2. 二级标题

* 子项 1

* 子项 2

1. 子子项 1

+ 子子项 2

3. 三级标题

4. 四级标题



# 文字相关

## 加粗

格式为 *\*加粗的信息** 两个星号包裹起来

这个是**加粗的信息**

## 倾斜

格式为\*倾斜的信息\* 一个星号包裹起来

这个是*倾斜的信息*

## 加粗和倾斜

格式为\*\*\*倾斜的信息\*\*\* 三个个星号包裹起来

这个是***加粗和倾斜的信息***

# <a id="target-section">代码块</a>



## 单行代码块

使用反引号(`)将代码包围起来。

这是一个示例代码`Console.Write("Hello, world");`



## 多行代码块

- 用三个反引号(\`\`\`)包裹代码,可在起始符号后指定编程语言(如`C#`)以开启语法高亮。

```C#
using System;

namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
```



# 超链接

## 文字超链接

* 行内式超链接

语法格式为`[链接文本](链接地址)`。

这是一个示例[百度](https://www.baidu.com)

* 参考式超链接

另外一种格式`[链接文本](链接地址)` 后面在定义一个`[链接标识符]: 链接地址`

先定义[tencent - cloud]: https://cloud.tencent.com 这个定义可以定义在任何地方

在使用

[腾讯云][tencent - cloud]

* 自动链接

直接使用尖括号`<>`包裹 URL,

百度网址<https://www.baidu.com>



## 图片超链接

格式为`[![错误显示](可以是本地地址也可以是远程地址)](跳转的地址)`

[![mark](https://markdown-here.com/img/icon256.png)](https://markdown-here.com/)





## 页面内跳转

**使用 HTML 锚点标签**:在跳转目标位置添加 HTML 标签并设置`id`属性,例如`<h2 id="target - section">目标章节</h2>`。然后在跳转链接处使用`href`指向这个`id`,链接格式为`[跳转到目标章节](#target - section)`。渲染成 HTML 后,点击 “跳转到目标章节” 就会跳转到相应标题处。

[点击跳转到目标章节](#target-section)

[回到顶部](#top)

**直接定义**:语法 `[文字描述](#跳转的标题)`

[标号嵌套](#标号嵌套)

# 其他

## 分割线

- 用三个或以上的 `-`(短横线)、`*`(星号)或 `+`(加号),并单独占一行。

***

---

+++

___

## 图片

格式为`![错误显示](可以是本地地址也可以是远程地址)`

* 本地地址

![本地图片](./assets/icon256-1751871393146-5-1751871396237-7.png)

* 远程地址

![mark](https://markdown-here.com/img/icon256.png)

## 表格

```md
| 表头 | 表头 |
| ---- | ---- |
| 单元格 | 单元格 |
| 单元格 | 单元格 |

| 左对齐 | 右对齐 | 居中对齐 |
| :-----| ----: | :----: |
| 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 |
```

| 表头1 | 表头2 | 表头三 |
| :----: | :----: | :----: |
| 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 |

## 引用

引用使用`>`+ 你要引用的话

> 这是一行引用

多行引用直接依次书写,也可以引用图片,代码块,等等

> 这是引用
>
> ```C#
> //引用代码块
> Console.WriteLine("Hello, World!");
> ```
>
> * 标题一
> * 标题二
> * 标题三



# 路径



## 相对路径

就是直接根据当前md文件所在的目录开始

例子`./assets/icon256.png`;

![图片](./assets/icon256.png)

## 绝对路径

就是直接从C盘或者D盘开始

例子

![图片](./pictures/icon256.png)

BIN
张永攀/MarkDown/assets/icon256-1751871393146-5-1751871396237-7.png Прегледај датотеку

Before After
Width: 256  |  Height: 256  |  Size: 4.5 KiB

BIN
张永攀/MarkDown/assets/icon256-1751871393146-5.png Прегледај датотеку

Before After
Width: 256  |  Height: 256  |  Size: 4.5 KiB

BIN
张永攀/MarkDown/assets/icon256.png Прегледај датотеку

Before After
Width: 256  |  Height: 256  |  Size: 4.5 KiB

BIN
张永攀/MarkDown/pictures/icon256.png Прегледај датотеку

Before After
Width: 256  |  Height: 256  |  Size: 4.5 KiB

+ 68
- 0
张永攀/SourceInsight/SourceInsight.md Прегледај датотеку

@@ -0,0 +1,68 @@
# SourceInSight相关知识点

## 常规操作

### 工程新建/添加

点击`project`->`new progect` 第一个选择项目名称,第二个选择需要导入的代码目录

![image-20250708144042474](./pictures/image-20250708144042474.png)

### 文件新建/添加

当创建一个工程的时候,让你选择添加到文件,选中想加入的文件夹,点击`Add Tree`

![image-20250708152237774](./pictures/image-20250708152237774.png)

添加完文件点击这个小书

![image-20250708152600062](./pictures/image-20250708152600062.png)

![image-20250708154814072](./pictures/image-20250708154814072.png)

### 符号表同步

![image-20250708161124106](./pictures/image-20250708161124106.png)

### 视图切换

点击 `Window`>`Arrange Windows`>`Tile One Window`和two可以切换两个视图

![image-20250710161700362](./pictures/image-20250710161700362.png)



### 常用窗口打开/关闭

上面三个按钮依次代表

* Project Window 窗口 右侧 查看我们的工程所在文件夹以及文件夹下的文件
* Symbol Window 窗口左侧 用于查看我们开启的文件以及文件内所包含的函数
* Context Window窗口 左下 用于查看,函数中某个参数与函数的关系
* Relation Window窗口 右下 用于查看函数以及参数所定义的位置

![image-20250708161934639](./pictures/image-20250708161934639.png)

### 搜索引用

1. 模糊查找

符号包括:函数、宏、数据类型等
1、查找本文件的符号
2、查找项目文件
3、查找项目符号
4、文件目录

![image-20250711081727965](./pictures/image-20250711081727965.png)

2. 精确查找

`Search`->`Lookup References` 引用查找

![image-20250711081933389](./pictures/image-20250711081933389.png)

3. 当前文件查找

`Search`->`Search` 在当前文件查找

![image-20250711082234185](./pictures/image-20250711082234185.png)

BIN
张永攀/SourceInsight/pictures/image-20250708144042474.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 94 KiB

BIN
张永攀/SourceInsight/pictures/image-20250708152237774.png Прегледај датотеку

Before After
Width: 1077  |  Height: 946  |  Size: 77 KiB

BIN
张永攀/SourceInsight/pictures/image-20250708152600062.png Прегледај датотеку

Before After
Width: 478  |  Height: 142  |  Size: 8.4 KiB

BIN
张永攀/SourceInsight/pictures/image-20250708154814072.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 455 KiB

BIN
张永攀/SourceInsight/pictures/image-20250708161124106.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 388 KiB

BIN
张永攀/SourceInsight/pictures/image-20250708161934639.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 378 KiB

BIN
张永攀/SourceInsight/pictures/image-20250710161700362.png Прегледај датотеку

Before After
Width: 1309  |  Height: 531  |  Size: 96 KiB

BIN
张永攀/SourceInsight/pictures/image-20250711081727965.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 283 KiB

BIN
张永攀/SourceInsight/pictures/image-20250711081933389.png Прегледај датотеку

Before After
Width: 940  |  Height: 634  |  Size: 27 KiB

BIN
张永攀/SourceInsight/pictures/image-20250711082234185.png Прегледај датотеку

Before After
Width: 853  |  Height: 469  |  Size: 27 KiB

+ 100
- 0
张永攀/UnitTest/UnitTestVisualStudio.md Прегледај датотеку

@@ -0,0 +1,100 @@
# 单元测试相关知识点
## 单元测试
### 单元测试创建

打开vs2022选择`C++`的`测试`选择第一个`本机单元测试项目`

![image-20250709155454475](./pictures/image-20250709155454475.png)

ps:怎么添加一个项目到单元测试 在单元测试的时候需要添加现有项选择`obj`文件就能链接成功

![image-20250711142542564](./pictures/image-20250711142542564.png)

### 代码覆盖度

代码覆盖就是测试代码的每一条语句都要执行到,确保不发生错误

下面是编写的测试代码

![image-20250709170046904](./pictures/image-20250709170046904.png)

以下是测试代码

![image-20250709170003432](./pictures/image-20250709170003432.png)

### 运行性能

### 测试样例书写

1. 需要测试的代码

```C++
double MathLibrary::Divide(double a, double b) {
if (b != 0) return a / b;
return 0.0;
}

bool MathLibrary::IsPositive(int n) {
return n >= 0;
}

bool MathLibrary::CheckRange(int a, int b) {
return (a > 0) && (b < 10);
}

double MathLibrary::CalculateDiscount(int age, bool isMember) {
if (age < 18)
return isMember ? 0.25 : 0.20;
else
return isMember ? 0.15 : 0.10;
}
```

2. 以下时测试样例的书写

```C++
#include "pch.h"
#include "CppUnitTest.h"
#include "MathLibrary.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTestDemo
{
TEST_CLASS(UnitTestDemo)
{
public:

// 语句覆盖
TEST_METHOD(Divide_ZeroDivisor1) { Assert::AreEqual(0.0, MathLibrary::Divide(4, 0)); }
TEST_METHOD(Divide_ZeroDivisor2) { Assert::AreEqual(0.0, MathLibrary::Divide(4, 0)); }

// 分支覆盖
TEST_METHOD(IsPositive_Positive1) { Assert::IsTrue(MathLibrary::IsPositive(5)); }
TEST_METHOD(IsPositive_Negative2) { Assert::IsFalse(MathLibrary::IsPositive(-5)); }

// 条件覆盖
TEST_METHOD(CheckRange_BothTrue1) { Assert::IsTrue(MathLibrary::CheckRange(5, 5)); }
TEST_METHOD(CheckRange_FirstFalse2) { Assert::IsFalse(MathLibrary::CheckRange(-5, 5)); }
TEST_METHOD(CheckRange_SecondFalse3) { Assert::IsFalse(MathLibrary::CheckRange(5, 15)); }

// 路径覆盖
TEST_METHOD(Discount_TeenMember1) { Assert::AreEqual(0.25, MathLibrary::CalculateDiscount(15, true)); }
TEST_METHOD(Discount_TeenNonMember2) { Assert::AreEqual(0.20, MathLibrary::CalculateDiscount(15, false)); }
TEST_METHOD(Discount_AdultMember3) { Assert::AreEqual(0.15, MathLibrary::CalculateDiscount(20, true)); }
TEST_METHOD(Discount_AdultNonMember4) { Assert::AreEqual(0.10, MathLibrary::CalculateDiscount(20, false)); }


};
}
```

### 单元测试的调试

在需要调试的位置打上断点,右键点击`调试测试`

![image-20250710135842421](./pictures/image-20250710135842421.png)



![image-20250710135748248](./pictures/image-20250710135748248.png)

BIN
张永攀/UnitTest/pictures/image-20250709155454475.png Прегледај датотеку

Before After
Width: 1536  |  Height: 1020  |  Size: 138 KiB

BIN
张永攀/UnitTest/pictures/image-20250709170003432.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 404 KiB

BIN
张永攀/UnitTest/pictures/image-20250709170046904.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 214 KiB

BIN
张永攀/UnitTest/pictures/image-20250710135748248.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 373 KiB

BIN
张永攀/UnitTest/pictures/image-20250710135842421.png Прегледај датотеку

Before After
Width: 640  |  Height: 979  |  Size: 60 KiB

BIN
张永攀/UnitTest/pictures/image-20250711142521042.png Прегледај датотеку

Before After
Width: 1281  |  Height: 798  |  Size: 83 KiB

BIN
张永攀/UnitTest/pictures/image-20250711142542564.png Прегледај датотеку

Before After
Width: 1281  |  Height: 798  |  Size: 82 KiB

+ 240
- 0
张永攀/VisualStudio/VisualStudio.md Прегледај датотеку

@@ -0,0 +1,240 @@
# VisualStudio相关知识点

## 工程创建

### 工程相关

#### 创建/打开项目

1. 打开vs2022,选择创建`新项目`,选择`控制台`项目

![image-20250709094808484](./pictures/image-20250709094808484.png)

2. 给项目起一个名字 点击`创建`

![image-20250709094954912](./pictures/image-20250709094954912.png)

3. 创建成功的界面

![image-20250709095131841](./pictures/image-20250709095131841.png)

#### 加载/卸载项目

1. **加载项目**:在资源管理器上右键选择`添加`>`现有项目`选择创建的C++的项目

![image-20250709095855890](./pictures/image-20250709095855890.png)

资源管理器中已经有两个项目

![image-20250709100041991](./pictures/image-20250709100041991.png)

2. **卸载项目**:右键所需要卸载的项目点击卸载项目

![image-20250709100156150](./pictures/image-20250709100156150.png)

显示已经被卸载

![image-20250709100310479](./pictures/image-20250709100310479.png)



ps:如果想要隐藏想要卸载的项目可以在资源管理器上右键选择`隐藏所卸载的项目`

#### 设置启动项

想要那个项目作为启动项可以在这个项目上面右键选择`设置为启动项`

![image-20250709100701091](./pictures/image-20250709100701091.png)

### 解决方案相关

#### 添加项目

在解决方案上右键选择`添加`>`添加新建项`就会跳到创建项目界面,参考上面的[创建/打开项目](#创建/打开项目)

![image-20250709101356150](./pictures/image-20250709101356150.png)



### 文件相关

#### 创建/打开文件

![image-20250710193728183](./pictures/image-20250710193728183.png)



#### 包括/排除文件

![image-20250710193746629](./pictures/image-20250710193746629.png)



## 工程配置

### 解决方案配置

可以选中`Debug`和`Relase`版本

点击`属性`>`配置管理器`选择配置

![image-20250710193859886](./pictures/image-20250710193859886.png)

### 平台配置

点击`属性`>`平台`可以选择x64和win32

![image-20250710182225697](./pictures/image-20250710182225697.png)

### 项目类型配置

在需要配置的项目右键点击`属性`>`配置类型`可以选择exe和dll和lib

![image-20250710182341784](./pictures/image-20250710182341784.png)

### 路径配置

* 输出路径配置

点击`属性`>`常规`>`输出目录`

![image-20250709122232508](./pictures/image-20250709122232508.png)

* 头文件路径配置

![image-20250710182812661](./pictures/image-20250710182812661.png)

* 源文件路径配置

![image-20250710185808699](./pictures/image-20250710185808699.png)

* 库文件路径配置

![image-20250710185824334](./pictures/image-20250710185824334.png)

### 宏定义

右键项目属性点击`C/C++`>`预生成器`>`点击预处理器定义`

![image-20250709123345719](./pictures/image-20250709123345719.png)

### 运行库配置

1. **多线程调试 (/MTd)**
- 静态链接调试版运行库,生成的可执行文件独立运行,但体积较大。
- 适用于调试环境,无需依赖外部 DLL。
2. **多线程 (/MT)**
- 静态链接发布版运行库,生成的文件同样独立运行,但不含调试信息。
- 适用于发布版本,减小依赖。
3. **多线程调试 DLL (/MDd)**
- 动态链接调试版运行库,依赖系统或项目目录中的调试 DLL(如 `msvcrtd.dll`)。
- 适用于调试环境,减小可执行文件体积。
4. **多线程 DLL (/MD)**
- 动态链接发布版运行库,依赖系统或项目目录中的发布 DLL(如 `msvcr120.dll`)。
- 适用于发布版本,多个程序可共享同一 DLL。

![image-20250710185938310](./pictures/image-20250710185938310.png)

### 调用库配置

1. 配置静态库的头文件选择`属性`>`C/C++`>`附加包含目录`将头文件目录配置上去

![image-20250709191548096](./pictures/image-20250709191548096.png)

2. 配置静态库的所在位置,选择`属性`>`链接器`>`常规`>`附加库目录`配置其所在路径

![image-20250709191834414](./pictures/image-20250709191834414.png)

3. 配置静态库的所在位置,选择`属性`>`链接器`>`输入`>`附加依赖项`配置其名字

![image-20250710190647504](./pictures/image-20250710190647504.png)

### 安全检查

右键点击项目 > `属性` >`C/C++` >`代码生成`>`安全检查`选择是否启用

![image-20250710184417173](./pictures/image-20250710184417173.png)

## 工程调试

### 断点

#### 断点创建

在最左侧侧边栏,出现红点就说明断点添加成功

![image-20250709130209401](./pictures/image-20250709130209401.png)

#### 断点删除

再次点击断点,即可删除

#### 断点禁用,启用

右键断点,即可选择是否启动,禁用断点

![image-20250709130411051](./pictures/image-20250709130411051.png)

#### 条件断点

右键断点选择条件断点,设置条件为`i == 5`,表示当i=5时才会命中断点

![image-20250709130839975](./pictures/image-20250709130839975.png)

运行程序就会发现当输出5边时候会命中断点

![image-20250709131410721](./pictures/image-20250709131410721.png)

## 窗口

### 监视窗口

点击上方`调试`>`窗口`>`监视` 可以选择监视窗口,也可以选择下方的自动窗口

![image-20250709133727219](./pictures/image-20250709133727219.png)

### 内存窗口

点击上方`调试`>`窗口`>`内存` 可以选择

![image-20250709133920706](./pictures/image-20250709133920706.png)

### 线程窗口

点击上方`调试`>`窗口`>`线程` 可以选择

![image-20250709134545386](./pictures/image-20250709134545386.png)

### 调用堆栈窗口

点击上方`调试`>`窗口`>`调用堆栈` 可以选择

![image-20250709134732035](./pictures/image-20250709134732035.png)

## 单步调试

### 全速运行

全速运行就是不命中断点,点击上方`调试`>`开始执行(不调试)`>

![image-20250709135300740](./pictures/image-20250709135300740.png)



### 重新运行

快捷站是`ctrl+shfit+F5`

![image-20250709135437137](./pictures/image-20250709135437137.png)

### 逐过程

快捷站是`F10`

![image-20250709135530768](./pictures/image-20250709135530768.png)

### 逐语句

快捷站是`F11`

![image-20250709135551916](./pictures/image-20250709135551916.png)

BIN
张永攀/VisualStudio/pictures/image-20250709094808484.png Прегледај датотеку

Before After
Width: 1536  |  Height: 1020  |  Size: 165 KiB

BIN
张永攀/VisualStudio/pictures/image-20250709094954912.png Прегледај датотеку

Before After
Width: 1536  |  Height: 1020  |  Size: 39 KiB

BIN
张永攀/VisualStudio/pictures/image-20250709095131841.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 296 KiB

BIN
张永攀/VisualStudio/pictures/image-20250709095855890.png Прегледај датотеку

Before After
Width: 2559  |  Height: 1539  |  Size: 353 KiB

BIN
张永攀/VisualStudio/pictures/image-20250709100041991.png Прегледај датотеку

Before After
Width: 462  |  Height: 760  |  Size: 30 KiB

BIN
张永攀/VisualStudio/pictures/image-20250709100156150.png Прегледај датотеку

Before After
Width: 735  |  Height: 1357  |  Size: 82 KiB

Неке датотеке нису приказане због велике количине промена

Loading…
Откажи
Сачувај