Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

7.2 KiB

VisualStudio相关知识点

工程创建

工程相关

创建项目

image-20250709125108324

打开项目

image-20250710085645958

image-20250710085959302

加载/卸载项目

加载项目

image-20250711084705933

卸载项目

image-20250711084623468

设置启动项

image-20250710090403869

解决方案相关

添加项目

image-20250710090217653

文件相关

创建文件

image-20250710090809897

打开文件

image-20250710090916630

包括/排除文件

排除文件

image-20250710095042067

包括就是将排除的文件添加回去

工程配置

解决方案配置

  1. Debug:用于开发和调试应用程序。调试版本包含完整的调试信息,可以用于在调试模式下运行程序。

  2. Release:用于发布生产环境中的应用程序。发布版本经过优化,通常比调试版本快,但不包含调试信息。

image-20250710100448716

平台配置

image-20250710091509521

项目类型配置

image-20250710091420578

路径配置

输出路径配置

image-20250710092030740

头文件路径配置

image-20250710092136181

源文件路径配置

image-20250710092209778

库文件路径配置

image-20250710092232688

宏定义

image-20250710092856967

image-20250710092931584

image-20250710092821156

运行库配置

image-20250710093134976

运行库各个选项具体含义

编译选项 含义 链接方式 运行库 适用场景
/MT 多线程静态链接 静态链接 LIBCMT.lib 不依赖 DLL,直接嵌入运行库代码 发布版本(Release),不依赖外部 DLL,提高可移植性
/MTd 多线程静态链接(调试) 静态链接 LIBCMTD.lib 调试用库,嵌入调试符号 调试版本(Debug),便于调试但体积大
/MD 多线程动态链接 静态链接 MSVCRT.lib,运行时依赖 MSVCRxx.dll 程序运行时需 MSVC 运行时 DLL 发布版本(Release),节省体积,适合多个程序共享运行时
/MDd 多线程动态链接(调试) 静态链接 MSVCRTD.lib,运行时依赖 MSVCRxxD.dll 调试用 DLL,含调试信息 调试版本(Debug),适用于开发调试

调用库配置

静态库配置:

在 Visual Studio 中调用静态库(.lib)的一般步骤如下:

  1. 添加头文件路径:在“项目属性 → C/C++ → 常规 → 附加包含目录”中添加 .h 文件所在目录。
  2. 添加库文件路径:在“项目属性 → 链接器 → 常规 → 附加库目录”中添加 .lib 文件所在目录。
  3. 指定库文件名:在“项目属性 → 链接器 → 输入 → 附加依赖项”中添加库名,如 xxx.lib
  4. 保持运行时库一致:在“C/C++ → 代码生成 → 运行库”中选择与库一致的选项(如 /MT/MD)。
  5. 在代码中引入头文件并调用库函数即可。

动态库配置:

在 Visual Studio 中调用动态库(.dll)的一般步骤如下:

  1. 添加头文件路径:在“项目属性 → C/C++ → 常规 → 附加包含目录”中添加 .h 文件目录。
  2. 添加库文件路径:在“项目属性 → 链接器 → 常规 → 附加库目录”中添加 .lib 文件目录。
  3. 指定依赖库名:在“链接器 → 输入 → 附加依赖项”中添加对应的 .lib 文件名。
  4. 复制 DLL 文件:将 .dll 文件放在可执行文件所在目录,确保运行时可以找到。
  5. 代码中引入头文件 并调用导入的函数。

安全检查

image-20250710093220851

Visual Studio 安全检查的目的

  1. 防止缓冲区溢出
    通过检查数组越界、字符串溢出等问题,防止栈溢出攻击(如启用 /GS 选项)。
  2. 检测非法内存访问
    捕捉空指针解引用、未初始化内存使用等潜在错误。
  3. 启用运行时安全检查(RTC)
    调试时检测变量使用错误、函数调用栈损坏等。
  4. 强化函数调用安全性
    替换不安全函数(如 strcpy)为更安全版本(如 strcpy_s),避免未检查的内存拷贝。
  5. 防止代码注入和篡改
    使用 DEP、ASLR、栈保护等机制增强运行时安全。
  6. 辅助发现潜在漏洞
    通过静态分析、代码检查、警告等级等手段提前发现逻辑缺陷和潜在漏洞。

工程调试

断点

断点创建

  • 单击旁边栏出现红点,即创建断点。

断点删除

  • 单击红点,红点消失,即删除断点。

断点禁用

  • ALT+F9,或者单击鼠标右键

断点启用

  • ALT+F9,或者单击鼠标左键

条件断点

  • image-20250707182318934
  • 单击鼠标右键

窗口

监视窗口

image-20250710093722255

内存窗口

image-20250710093824991

线程窗口

image-20250710093937339

调用堆栈窗口

image-20250710094042822

单步调试

全速运行

点击继续符号,他就在两个相邻断点间,迅速执行。

image-20250710094412173

重新运行

点击重新运行或者CTRL+SHIFT+F5就重新运行

image-20250710094246863

逐过程

点击逐过程或者F10,逐过程是将主函数里面的子函数当作一个过程,不管子函数里面又引用了多少子函数。

image-20250710094211996

逐语句

点击逐语句或者F11,逐语句是将主函数里面的一个一个语句运行,如遇子函数,进入子函数又逐语句运行。

image-20250710094139698