1 创建c++ dll

使用vs2019用c++创建dll库:https://blog.csdn.net/qq_41374107/article/details/106021015

2 注释快捷键

注释:ctrl+k,ctrl+c
取消:ctrl+k,ctrl+u

3 代码折叠和展开

  Ctrl + M + O:折叠所有方法;Ctrl + M + M:折叠或者展开当前方法;Ctrl + M + L:开所有方法。
  VS2019使用快捷键 Ctrl + M + O 无法折叠 region 的设置:工具 => 选项 => 文本编辑器 => C# => 高级 => 大纲 => 折叠到定义时可折叠#region;

4 自动对齐

CTRL+K
CTRL+F

5 vs2019项目中添加外部文件或者文件夹

  1、将需要使用的外部路径的文件拷贝至项目下。
  2、在解决方案资源管理器中的下方按钮中点击显示所有文件按钮。
在这里插入图片描述
  3、右击在项目中需要添加的文件,点击“包含在项目中”。
在这里插入图片描述
  4、配置附加包含目录:点击项目,再点击属性。然后再“c/c++”下“常规”设置“附加包含目录”,即填写需要包含文件的文件夹路劲,如果有多个文件夹路劲则用分号空开。最后点击确认即可。
在这里插入图片描述

6 v141_xp安装

在这里插入图片描述

7 Visual Studio切换界面显示语言

【工具】-【选项】-【环境】-【区域设置】-【语言】-【获取其他语言】

8 关于vs编码格式UTF8中文处理方式

  本节内容来自这里

9 VS2019 设置显示”高级保存选项“

  本节内容来自这里

10 vs安装扩展

  本节内容来自这里

11 VS 运行库MT、MD的区别

  VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:
  多线程(/MT)多线程调试(/MTd)
  多线程DLL(/MD)多线程调试DLL(/MDd)
  单线程(/ML)单线程调试(/MLd)
  目前Win7、Win10等,选择MD问题不大,但是XP等一些比较老的系统需要选择MT。
  两者的区别:
  /MT是 "multithread, static version” 意思是多线程静态的版本,定义了它后,编译器把 LIBCMT.lib 安置到OBJ文件中,让链接器使用LIBCMT.lib 处理外部符号。
  /MD是 "multithread- and DLL-specific version” ,意思是多线程DLL版本,定义了它后,编译器把 MSVCRT.lib 安置到OBJ文件中,它连接到DLL的方式是静态链接,实际上工作的库是 MSVCR80.DLL
  即:
  静态运行时库:LIBCMT.lib
  动态运行时库:MSVCRT.lib + MSVCR80.DLL
  所以,当你用CMAKE生成工程文件时,若CMAKE是用/MT生成的(查看工程原始目录的CMakeLists.txt),则它所调用的运行时库为:LIBCMT.lib,若生成的工程的运行时库(Runtime Library)你选择/MD,则此工程在编译后链接的时候,将会调用动态运行时库:MSVCRT.lib + MSVCR80.DLL,明显,两次对同一个某运行时库里的函数调用的库不同,则会出现重定义的错误。若此工程生成的是库文件,则其他工程调用此库时也必须是/MT。
  其他说明:
  其中以小写 “d” 结尾的选项表示的 DEBUG 版本的,没有 “d” 的为 RELEASE 版本。大型项目中必须要求所有组件和第三方库的运行时库是统一的,否则将会出现LNK2005井喷。
  单线程运行时库选项/ML和/MLd在VS2003以后就被废了。

12 vcvarsall.bat位置

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat

13 msbulid路径

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe

14 Cmake调用vs

visual studio 15 2017
Visual Studio 16 2019

15 VS2019添加静态库文件

  右键->属性->VC++目录:
  包含目录:头文件目录;引用目录:连接库目录;
在这里插入图片描述
  链接器->输入:
  附加依赖项:静态链接库名称;
在这里插入图片描述
  链接器->常规:
  附加库目录字段,将指定的XX.lib所在的路径添加进去。
在这里插入图片描述

16 默认库“msvcrtd.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

  warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library;
  原因:
  在使用多线程调试dll(MDd)模式的时候 <位置:配置属性 - c/c++ - 代码生成-运行时库>msvcrtd.lib 与 ibcmt.lib产生冲突;
  解决方法有2个:
  1、右击工程 - 属性“配置属性 - 链接器 - 输入 - 忽略特定库”,添加“libcmt.lib ”;
  2、右击工程 - 属性 ”配置属性 - 链接器 - 命令行” 添加: /NODEFAULTLIB:“libcmt.lib”;

17 元文件找不到

  .nuget\packages\microsoft.extensions.logging.abstractions\3.1.32\analyzers\dotnet\roslyn3.11\cs\Microsoft.Extensions.Logging.Generators.dll找不到:
  解决方案->右键->管理解决方案的nuget程序包->选择项目->安装。
在这里插入图片描述

18 命令行 error D8021: 无效的数值参数 “/Wextra”

  该项目之前是在不同系统下 (比如ubuntu) 配置好项目,个人将其在win10下面重新编译配置并运行,因此出现上述报错信息;
  解决方法:右键项目 -> 属性 -> C/C++ -> 命令行,将 “其它选项” 中内容删除即可。

19 Visual Studio 2017各版本安装包离线下载、安装全解析

https://www.ithome.com/0/297/093.htm

20 设置C++17标准

右键项目,属性,常规->C++语言标准,选择【C++17标准】:
在这里插入图片描述

21 此模块的调试信息中缺少源信息?

在这里插入图片描述

22 是否忘记了向源中添加"#include “pch.h"

在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐