菜鸟笔记
提升您的技术认知

visual studio基本使用-ag真人游戏

安装

软件下载关联地址(老版本要求登录,新版本是在线安装)vs2017 vs2019

visual studio 2022 路线图 | microsoft docs   (工具站msdn, 我告诉你 - 做一个安静的工具站)

配置安装选项

vs2008按下选项 > x64编译器和工具 - vs2008配置x64平台,即64位编译器,如下:

默认安装根目录

 - vs2013:c:\program files (x86)\microsoft visual studio 12.0

 - vs2015:c:\program files (x86)\microsoft visual studio 14.0

 - vs2017:c:\program files (x86)\microsoft visual studio\2017\professional(专业版安装目录)

 - vs2019:c:\program files (x86)\microsoft visual studio\2019\professional(专业版安装目录)

visual studio installer

 vs2017、vs2019使用在线安装,增加了visual studio installer(在开始菜单里面或者下面的路径)

 visual studio installer:c:\program files (x86)\microsoft visual studio\installer

 语言包:点击 安装 或者 更多-> 修改 找到语言包 选择语言(使用vcpkg需要安装英语)

 vsto:进入installer,单个组件选项的搜索框,搜索vsto安装

关于在线安装下载缓慢或者0b/s,可将dns从114.114.114.114(国内的dns地址)备用地址改成8.8.8.8或8.8.4.4(谷歌公司的dns地址)

卸载

老版本卸载,从 releases · microsoft/visualstudiouninstaller · github

下载setup.forceduninstall.exe,并以管理员运行,输入y,等待完成...

vs2017、vs2019可通过visual studio installer卸载不同模块

编译

sln编译

  脚本编译ag真人游戏的解决方案,即脚本自动编译sln文件(vs2019无vsxxcomntools类似环境变量,需手动指定)

# vs对应的环境变量存在,并不代表已经安装,还得看devenv.exe和devenv.com是否存在
vs90comntools=c:\program files (x86)\microsoft visual studio 9.0\common7\tools\
vs120comntools=c:\program files (x86)\microsoft visual studio 12.0\common7\tools\
vs140comntools=c:\program files (x86)\microsoft visual studio 14.0\common7\tools\
vs2017installdir=c:\program files (x86)\microsoft visual studio\2017\professional
# visual studio 2013 (2008 2015类似)
set vcenv="%vs120comntools%..\ide\devenv.com"
# visual studio 2017
set vcenv="%vs2017installdir%\common7\ide\devenv.com"
# 编译ag真人游戏的解决方案 
%vcenv% g:\wesproject\wes-textengine\src\text.sln /rebuild "debug|x64" 
/out "window-debug-x64-log.txt"
# 清理ag真人游戏的解决方案 
%vcenv% g:\wesproject\wes-textengine\src\text.sln /clean "debug|x64" 
/out "window-debug-x64-log.txt"
# 查看帮助
%vcenv% /?

nmake编译

  make调用nmake,make.bat如下:

@echo off
if "%1"=="check" goto check
if "%1"=="clean" goto clean
copy /y win32\config.h src\config.h
copy /y win32\unistd.h examples\unistd.h
nmake -f win32\makefile.msvc
goto end
:check
nmake -f win32\makefile.msvc check
goto end
:clean
nmake -f win32\makefile.msvc clean
goto end
:end

  makefile.msvc文件参考https://github.com/erikd/libsamplerate/blob/master/win32/makefile.msvc

  vs的makefile文件说明

# 引用shell命令,如erase和echo
-@erase -@echo 
# 定义变量和引用变量
cpp=cl.exe $(cpp)
# 包含目录 vc目录和winsdk目录
# -   vc目录vs2013包含目录如下:
c:\program files (x86)\microsoft visual studio 12.0\vc\include
# -   winsdk目录winsdk8.1包含目录如下:
c:\program files (x86)\windows kits\8.1\include\um
c:\program files (x86)\windows kits\8.1\include\shared
c:\program files (x86)\windows kits\8.1\include\winrt
# 库目录 vc目录和winsdk目录
# -   vc目录vs2013库目录如下:
# --  x86
c:\program files (x86)\microsoft visual studio 12.0\vc\lib
# --  x64
c:\program files (x86)\microsoft visual studio 12.0\vc\lib\amd64
# -   winsdk目录winsdk8.1包含目录如下:
# --  x86
c:\program files (x86)\windows kits\8.1\lib\winv6.3\um\x86
# --  x64
c:\program files (x86)\windows kits\8.1\lib\winv6.3\um\x64

编译器直接编译

  启动cmd,配置编译器cl环境

# vs2013编译器(vs2010和vs2015类似)
call "%vs120comntools%"vsvars32.bat
# vs2017编译器
call "%vs2017installdir%\common7\tools\vsdevcmd.bat"
# vs2019编译器x64架构编译器(若选择x86,可不加后面参数)
call "c:\program files (x86)\microsoft visual studio\2019\professional\common7\tools\vsdevcmd.bat" -arch=amd64

  编译链接脚本

# 
cl /c /i. /iffmpeg\include /dwin64 /w3 /wx- /wd4996 /gs /gr /zi /od /mdd /ehsc /nologo main.cpp
#
link main.obj /libpath:. /libpath:.\ffmpeg\include /dynamicbase avformat.lib avcodec.lib /debug /machine:x64 /subsystem:console /pdb:main.pdb /out:main.exe

调试

库调试两种方式

1. 启动调试

  库工程属性 > 配置属性 > 调试 > 命令

     指定运行程序(包含目录和运行程序)

2. 附加调试

  菜单 > 调试 > 附加到进程 

     从列表中指定运行程序,然后附加

release下调试四步设置

  1. c/c --> 常规 --> 调试信息格式 --> 程序数据库 (/zi) ;
  2. c/c --> 常规 --> 优化 --> 优化 --> 已禁用 (/od);
  3. 链接器 --> 常规--> 启动增量链接 --> 是 (/incremental);
  4. 链接器 --> 调试 --> 生成调试信息 --> 生成调试信息 (/debug)。

调试技巧

   行号右键可添加条件断点和操作断点(vs2017可以),操作断点输出 {变量名},右键变量可增加值更改中断

  调试 > 窗口

   模块窗口 - 可查看库名称,加载路径,是否加载符号,以及加载的符号文件,右键可加载符号

   堆栈窗口 - 

   并行堆栈 - 

   显示诊断工具 - 

设置

工程属性

ag真人游戏的解决方案资源管理器 > 右键工程 > 选择属性 > 属性页界面(或 主菜单 > 调试 > xxx属性 > 属性页界面)

常规

  • 输出目录               $(outdir)
  • 中间目录               $(intdir)
  • 目标文件名            $(targetname)
  • 目标文件扩展名     $(targetext)
  • 生成日志文件         编译链接命令日志
  • 平台工具集             visual studio 2013 (v120)

调试

  • 命令                        启动程序全路径
  • 命令参数                 程序启动参数
  • 工作目录                 默认$(projectdir),通常修改为$(outdir)
  • 环境                        path=$(qtdir)\bin;$(path)或path=$(qtdir)\bin;$(path)

 c/c

→ 常规

  • 附加包含目录          /i[路径]
  • 调试信息格式          /zi 常用
  • 警告等级                  /w0 - /w4 /wall ide的默认/w3命令行默认/w1,/w禁止显示所有警告,/wall显示所有警告
  • 将警告视为错误       /wx-
  • 多处理编译              /mp

→ 优化

  • 优化                         /od /o1 /o2 /ox   禁止 大小最小化  速度最小化  完全优化

→ 预处理                         

  • 预处理器定义           /d "_debug"

→ 代码生成

  • 启动c 异常            /ehsc 同步异常处理模型
  • 运行库                      /mdd /md /mtd /mt
  • 结构成员对齐           /zp[数字]
  • 启用增强指令集     
  • 浮点模型                  /fp:precise

→ 语言

  • 将wchar_t视为内置类型           /zc:wchar_t   /zc:wchar_t-
  • 启动运行时类型信息                  /gr[-] 启动rtti(主要用于typeid和dymatic_cast)
  • c 语言标准                             /std:c 14     /std:c 17  /std:c latest        vs2017以上

→ 高级

  • 调用约定                                    __cdecl (/gd)   __stdcall (/gz)
  • 编译为                                       编译为 c 代码 (/tc)   编译为 c 代码 (/tp)
  • 禁用特定警告                             /wd[数字]

→ 命令行

  • /source-charset:utf-8                指定原代码编码                               (vs 2015 update 2以上)
  • /execution-charset:utf-8           指定执行文件编码                            (vs 2015 update 2以上)
  • /utf-8                                        同时指定原代码编码和执行文件编码(vs 2015 update 2以上)

链接器

→ 常规

  • 启动增量链接                            /incremental或者 /incremental:no(对应生成同名*.ilk文件)
  • 附加库目录                                /libpath:"<目录>"

→ 输入

  • 附加依赖项                              "*.lib"
  • 模块定义文件                           /def:"*.def" (动态库需要导出的接口)

→ 调试

  • 生成调试信息                           /debug 或者没有
  • 生成程序数据库文件                /pdb:""

→ 系统

  • 子系统                                     /subsystem:console 或 /subsystem:windows
  • 堆栈保留大小                          /stack:"2000000" 默认1mb

→ 高级

  • 导入库                                    /implib:"<生成导入库lib的路径>"
  • 目标计算机                             /machine:x86或者/machine:x64

也可以新建一张属性表(属性管理器中),设定用户宏,然后可以通过从父集或项目默认设置继承来设置相关项

另外: /dll   /out:"*.dll"

手动:/force:multiple 忽略变量多重定义

工具菜单

获取工具和功能(vs2017以上)

   进入visual studio installer

选项(主菜单 > 工具 > 选项 > 工具选项设置界面)

   文本编辑器

   → c/c

  • 常规       -   行号
  • 滚动条   -   使用垂直滚动条的缩略图模式

   调试

   → 符号

  • 可以指定pdb搜索目录,默认会自动搜索dll库所在目录的位置

工具

发行组件

(redistributable)

在vs的安装目录下有个vc/redist目录,里面可以找到运行库(如msvcp120.dll msvcr120.dll)和运行库安装程序

vs相关文件下载网站 https://visualstudio.microsoft.com/zh-hans/downloads/

在网页其他工具和框架可以找到最新redistributable安装包,点击旧版本链接可找到其他版本redistributable安装包

安装vs后后,会将相应平台库拷贝到c:\windows\system32和c:\windows\syswow64目录;

集成工具

在vs的安装目录下有个common7/tools目录下

- errlook.exe   通过 [visua studio ->工具->错误查找]   启动 ---  查看getlasterror()错误码描述 

- guidgen.exe 通过 [visua studio ->工具->创建guid] 启动 --- 创建guid

vc工具

vs2013:c:\program files (x86)\microsoft visual studio 12.0\vc\bin

   进入c:\program files (x86)\microsoft visual studio 12.0\common7\tools\shortcuts目录,点击相应图标,或执行如下命令:

# vs2013 开发人员命令提示  
call "%vs120comntools%"vsdevcmd.bat
# vs2013 x86 本机工具命令提示
pushd "%vs120comntools%"..\..\vc
call vcvarsall.bat x86
popd
# vs2013 x64 本机工具命令提示
pushd "%vs120comntools%"..\..\vc
call vcvarsall.bat amd64
popd
# vs2013 x64 兼容工具命令提示
pushd "%vs120comntools%"..\..\vc
call vcvarsall.bat x86_amd64
popd
# vs2013 arm 兼容工具命令提示
pushd "%vs120comntools%"..\..\vc
call vcvarsall.bat x86_arm
popd
# 常用
pushd "%vs120comntools%"..\..\vc && call vcvarsall.bat x86_amd64 && popd

   最后,运行dumpbin、lib和nmake 

dumpbin

 - 显示coff格式的文件信息,比如像vc编译器生成的目标文件(obj),可执行文件(exe)和动态链接库(dlls)等。

# 查看导出接口和依赖库与库接口
dumpbin /exports freeimage.dll
dumpbin /imports freeimage.dll
dumpbin /imports freeimage.exe
 
# 查看依赖库
dumpbin /dependents freeimage.dll
 
# 查看dll和exe是32位还是64位 看file header values下一行是x86还是x64
#  macos下 lipo  -info *.a 或 *.dylib
# ubuntu下 file *.a 查看有无x86-64,表明是否是64位
dumpbin /headers freeimage.dll
# 若是调试库,还能看到调试的pdb位置
 
# 查看符号表
#  macos下 nm  -nm *.dylib
dumpbin /symbols *.lib
 
# 查看库的公共符号
# 参数1 将按对象顺序显示符号及其偏移量。
# 参数2 将显示对象的偏移量和索引号,然后按字母顺序列出这些符号及每个符号的对象索引
# 若要两个输出都获得,指定不带数字参数
dumpbin /linkermember   *.lib
dumpbin /linkermember:1 *.lib
dumpbin /linkermember:2 *.lib

lib

# 判断lib文件对应是静态库还是动态库 结果包含obj则是静态库 结果包含dll则是动态库
lib /list hello.lib
 
# linux下所有对象文件(.o文件)列表
ar -t hello.a

nmake

 - nmake [/f makefile] [targets]

  • /?   帮助信息
  • /s   取消显示已执行的命令
  • /p   显示 nmake 信息
  • /nologo 不显示ag真人试玩娱乐的版权和版本号
nmake /nologo /s /f makefile.msvc

扩展工具

vassistx番茄助手

(vs2008)

--- 默认c:\program files (x86)\visual assist x\目录;

--- 将将va_x.dll的文件放入目录内;

(vs2012以上)

--- 找到%userprofile%\appdata\local\microsoft\visualstudio目录;

--- 找到vs对应目录,目录有数字代表,比如12代表2013,进入目录找到extensions目录;

--- 找到其中有几个目录,其中一个含有va相关文件,将va_x.dll的文件放入目录内;

image watch

--- 自定义natvis文件放在c:\users\<用户>\documents\visual studio 20xx\visualizers目录

# natvis模板

处理工具 

nasm和yasm

nasm.props、nasm.targets、nasm.xml和yasm.props、yasm.targets、yasm.xml存放路径

visual studio 2013:   c:\program files (x86)\msbuild\microsoft.cpp\v4.0\v120\buildcustomizations
visual studio 2015:   c:\program files (x86)\msbuild\microsoft.cpp\v4.0\v140\buildcustomizations
visual studio 2017:   c:\program files (x86)\microsoft visual studio\2017\professional\common7\ide\vc\vctargets\buildcustomizations   (vs专业版)
visual studio 2019:   c:\program files (x86)\microsoft visual studio\2019\professional\msbuild\microsoft\vc\v160\buildcustomizations       (vs专业版)

nasm.exe和yasm.exe

visual studio 2017: c:\program files (x86)\microsoft visual studio\2017\professional\vc
visual studio 2019:  c:\program files (x86)\microsoft visual studio\2019\professional\vc (x64就放64bit,如何兼容还有待研究)

特点

编译选项

优化 - release下默认开启优化

  • assert会被跳过不执行;

支持标准

vs2013 - 支持大部分c99和c 11,不支持如下:

  • 关键字inline,c不支持c99的inline,需用__line代替,但cpp支持;
  • 关键字restrict,c不支持;
  • 关键字explicit,cpp不支持c 11的explicit;
  • 支持char16_t、char32_t、u16string和u32string,但不支持u"xxx"和u"xxx"

vs2017

  • 支持u"xxx"和u"xxx"

宏定义

  • win32
  • __cplusplus
  • winver

名词解释

增量链接

启动增量链接编译,每次编译链接的时候为每个函数预留一部分空间, 编译链接时, 只是修改你修改过的函数对应的代码, 其它二进制代码保持不变,跟增量升级一个道理;没启动增量链接编译,把obj删除, 然后重新生成,若在调试得重新开始调试;

分析

sln文件

  vs2013,空工程


microsoft visual studio solution file, format version 12.00
# visual studio 2013
visualstudioversion = 12.0.40629.0
minimumvisualstudioversion = 10.0.40219.1
global
	globalsection(solutionproperties) = presolution
		hidesolutionnode = false
	endglobalsection
endglobal

  vs2013,添加了一个工程

microsoft visual studio solution file, format version 12.00
# visual studio 2013
visualstudioversion = 12.0.40629.0
minimumvisualstudioversion = 10.0.40219.1
project("{8bc9ceb8-8b4a-11d0-8d11-00a0c91bc942}") = "audiodenoise", "audiodenoise\audiodenoise.vcxproj", "{8fed1ca7-c625-4d2e-becb-34467afb9936}"
endproject
global
	globalsection(solutionconfigurationplatforms) = presolution
		debug|win32 = debug|win32
		debug|x64 = debug|x64
		release|win32 = release|win32
		release|x64 = release|x64
	endglobalsection
	globalsection(projectconfigurationplatforms) = postsolution
		{8fed1ca7-c625-4d2e-becb-34467afb9936}.debug|win32.activecfg = debug|win32
		{8fed1ca7-c625-4d2e-becb-34467afb9936}.debug|win32.build.0 = debug|win32
		{8fed1ca7-c625-4d2e-becb-34467afb9936}.debug|x64.activecfg = debug|x64
		{8fed1ca7-c625-4d2e-becb-34467afb9936}.debug|x64.build.0 = debug|x64
		{8fed1ca7-c625-4d2e-becb-34467afb9936}.release|win32.activecfg = release|win32
		{8fed1ca7-c625-4d2e-becb-34467afb9936}.release|win32.build.0 = release|win32
		{8fed1ca7-c625-4d2e-becb-34467afb9936}.release|x64.activecfg = release|x64
		{8fed1ca7-c625-4d2e-becb-34467afb9936}.release|x64.build.0 = release|x64
	endglobalsection
	globalsection(solutionproperties) = presolution
		hidesolutionnode = false
	endglobalsection
endglobal

def文件

library  libsamplerate-0.dll
exports
src_new         @1
src_delete      @2

快捷键

ctrl k ctrl d                                            先选中代码,代码格式化

ctrl u                                                       先选中代码,小写

shift ctrl u                                              先选中代码,大写

tab                                                           先选中代码,前进一个tab键

shift tab                                                  先选中代码,后退一个tab键

参考

vs2017 devenv命令行开关

vs2017 devenv rebuild

msvc工具

nmake2017

版本

win_ver 系统版本
0x500 windows 2000
0x501 windows xp
0x600 windows vista
0x601 windows 7
0x0602 windows 8
0x0a00 windows 10
名称 内部版本(msvc ) _msc_ver
visual studio 2008 9.0 1500
visual studio 2010 10.0 1600
visual studio 2013 12.0 1800
visual studio 2015 14.0
visual studio 2017 15.0
visual studio 2019 16.0
网站地图