阐明
运用 VLD 内存走漏检测工具辅佐开发时整理的学习笔记。本篇对 VLD 源码包中的各文件用途做个概述。同系列文章目录可见 《内存走漏检测工具》目录
[TOC]
1. 全体概览
以 vld2.5.1
版别为例,下载源码 后,根目录下总共 5
个文件夹:.teamcity
、lib
、mfc_detect
、setup
、src
。还有 12
个文件:.editorconfig
、.gitignore
、.mailmap
、appveyor.yml
、AUTHORS.txt
、change_toolset.ps1
、CHANGES.txt
、COPYING.txt
、README.md
、vld.ini
、vld_vs14.sln
、vld_vs14_wo_mfc.sln
。
2. 文件夹 .teamcity
该文件夹的目录结构如下:
vld-master.teamcity
└─Vld
│ project-config.xml
│
├─buildTypes
│ Vld_CompileAll.xml
│ Vld_DebugCrtDllWin32.xml
│
├─pluginData
│ plugin-settings.xml
│
└─vcsRoots
Vld_HttpsGithubComKindDragonVldGitRefsHeadsMaster.xml
里边全是 xml
文件,是 teamcity
继续集成工具的装备文件,用于 VLD
项目源码的集成办理,关于该工具的介绍,可访问其官网:Jetbrains-teamcity。
3 文件夹 lib
该文件夹下有三个子文件夹:cppformat
、dbghelp
、gtest
。
3.1 文件夹 cppformat(生成 libformat)
该文件夹的目录结构如下:
vld-master\lib\cppformat
ChangeLog.rst
format.cc
format.h
format.vcxproj
format.vcxproj.filters
LICENSE.rst
posix.cc
posix.h
cppformat
是一个开源的 C++ 格式化库,仓库地址为 Github-fmtlib,在 VLD
中被用来格式化输出堆栈信息,详见 源码 callstack.cpp 第 224~275 行。
3.2 文件夹 dbghelp
该文件夹的目录结构如下:
vld-master\lib\dbghelp
├─include
│ DbgHelp.h
│
└─lib
├─Win32
│ DbgHelp.Lib
│
└─x64
DbgHelp.Lib
dbghelp
是 Windows
系统下的调试跟踪库,相关信息可见 关于 DbgHelp,在 VLD
中被用来获取堆栈信息,详见源码中 callstack.cpp、vld.cpp、vld_hooks.cpp 等文件。
3.3 文件夹 gtest(生成 libgtest)
该文件夹的目录结构如下:
vld-master\lib\gtest
│ CHANGES
│ CMakeLists.txt
│ configure
│ configure.ac
│ CONTRIBUTORS
│ LICENSE
│ Makefile.am
│ Makefile.in
│ README
│
├─include
│ └─gtest
│ │ gtest-death-test.h
│ │ gtest-message.h
│ │ gtest-param-test.h
│ │ gtest-param-test.h.pump
│ │ gtest-printers.h
│ │ gtest-spi.h
│ │ gtest-test-part.h
│ │ gtest-typed-test.h
│ │ gtest.h
│ │ gtest_pred_impl.h
│ │ gtest_prod.h
│ │
│ └─internal
│ gtest-death-test-internal.h
│ gtest-filepath.h
│ gtest-internal.h
│ gtest-linked_ptr.h
│ gtest-param-util-generated.h
│ gtest-param-util-generated.h.pump
│ gtest-param-util.h
│ gtest-port.h
│ gtest-string.h
│ gtest-tuple.h
│ gtest-tuple.h.pump
│ gtest-type-util.h
│ gtest-type-util.h.pump
│
├─msvc
│ gtest-md.sln
│ gtest.sln
│ gtest.vcxproj
│ gtest.vcxproj.filters
│ gtest_main.vcxproj
│ gtest_main.vcxproj.filters
│ gtest_prod_test.vcxproj
│ gtest_prod_test.vcxproj.filters
│ gtest_unittest.vcxproj
│ gtest_unittest.vcxproj.filters
│
└─src
gtest-all.cc
gtest-death-test.cc
gtest-filepath.cc
gtest-internal-inl.h
gtest-port.cc
gtest-printers.cc
gtest-test-part.cc
gtest-typed-test.cc
gtest.cc
gtest_main.cc
gtest
是 Google
开源的单元测验结构,仓库地址为 Github-googletest,在 VLD
中被用来测验 VLD
的各个功用,生成测验报告,详见 vld-master\src\tests 文件夹。
4 文件夹 mfc_detect(vld 辅佐工程)
该文件夹的目录结构如下:
vld-master\mfc_detect
│ resource.h
│ StdAfx.cpp
│ StdAfx.h
│ vldmfc.cpp
│ vldmfc.h
│ vldmfc.rc
│ vldmfc_detect.sln
│ vldmfc_detect.vcxproj
│ vldmfc_detect.vcxproj.filters
│ vldmfc_detect_vs10.sln
│ vldmfc_detect_vs11.sln
│ vldmfc_detect_vs14.sln
│
└─res
vldmfc.ico
vldmfc.rc2
这个文件夹中的 sln
解决方案,首要用于获取各版别 mfc.dll
的 new
函数序号(即 ORDINAL
值),将获取的函数序号用于 VLD
开发,用途详见 源码 dllspatches.cpp 第 88~370 行,获取思路详见 StackOverflow-Getting-ordinal-from-function-name-programmatically,获取时对应的动态库版别及函数详见 文件 vldmfc.cpp 第 189~301 行。这个文件夹下有多个 .sln
文件,它们别离对应不同的 Microsoft Visual Studio
版别,将其用记事本或其他文本编辑器翻开,可以知道对应的版别号:
- 文件
vldmfc_detect.sln
对应Visual Studio 2008
,VC
版别号为VC9.0
。 - 文件
vldmfc_detect_vs10.sln
对应Visual Studio 2010
,VC
版别号为VC10.0
。 - 文件
vldmfc_detect_vs11.sln
对应Visual Studio 2012
,VC
版别号为VC11.0
。 - 文件
vldmfc_detect_vs14.sln
对应Visual Studio 2015
,VC
版别号为VC14.0
。
5 文件夹 setup
这个文件夹中的文件首要用来打包 VLD
的装置程序,运用的装置制造软件为 Inno Setup 5.4.2
,其官网为:Inno Setup。该文件夹下有两个子文件夹:dbghelp
、editenv
。以及 6
个文件:build_version.bat
、license-free.txt
、modpath.iss
、version.h
、vld-setup.iss
、WizSmallImage.bmp
。
5.1 文件夹 dbghelp
该文件夹的目录结构如下:
vld-master\setup\dbghelp
├─x64
│ dbghelp.dll
│ Microsoft.DTfW.DHL.manifest
│
└─x86
dbghelp.dll
Microsoft.DTfW.DHL.manifest
dbghelp
下存储的是 VLD
依靠的 dbghelp
动态库及对应的清单文件(.manifest
文件),装置 VLD
时会被存储到 VLD
装置目录下(详见 .\Visual Leak Detector\bin
)。
5.2 文件夹 editenv
该文件夹的目录结构如下,只要一个 editenv.dll
文件:
vld-master\setup\editenv
editenv.dll
这个库是 Dan Moulding
旧版 VLD
修改环境变量时运用的动态库,详见 StackOverflow-programmatically-adding-a-directory-to-windows-path-environment-variable,对应的仓库为 Github-editenv。KindDragon
新版 VLD
是没有用到这个文件的,运用的是文件 modpath.iss
,另一种方法。
5.3 文件 build_version.bat
文件 build_version.bat
是批处理脚本,用于 Inno Setup
快速打包 VLD
装置器。
5.4 文件 license-free.txt
文件 license-free.txt
是要在 VLD
装置程序中显现的答应信息。
5.5 文件 modpath.iss
文件 modpath.iss
是 Inno Setup
脚本,选用 Pascal
编写,用于 VLD
装置时修改 Path
环境变量。
5.6 文件 version.h
文件 version.h
存储 VLD
的版别信息,被 VLD
源码引证,详见 源码 vldint.h 第 40 行。
5.7 文件 vld-setup.iss
文件 vld-setup.iss
是 Inno Setup
生成的脚本,用于指导生成 VLD
装置器,默认情况下,在装置完成后会生成对应的卸载器 unins000.dat
与 unins000.exe
,详见 VLD
装置目录。
5.8 文件 WizSmallImage.bmp
文件 WizSmallImage.bmp
是装置程序右上角显现的图像。
6 文件夹 src
这个文件夹用来存储 VLD
库的中心源代码,以及 VLD
功用测验的源代码。有一个 tests
子文件夹及别的 34
个文件。
6.1 外部 34 个文件(vld 中心工程)
这 34
个文件别离为:
vld-master\src
callstack.cpp
callstack.h
criticalsection.h
crtmfcpatch.h
dbghelp.h
dllspatches.cpp
loaderlock.h
map.h
ntapi.cpp
ntapi.h
resource.h
runalltests.bat
runtests.bat
set.h
stdafx.cpp
stdafx.h
tree.h
utility.cpp
utility.h
vld.cpp
vld.dll.dependency.x64.manifest
vld.dll.dependency.x86.manifest
vld.h
vld.natvis
vld.rc
vld.vcxproj
vld.vcxproj.filters
vldallocator.h
vldapi.cpp
vldheap.cpp
vldheap.h
vldint.h
vld_def.h
vld_hooks.cpp
其中有 17
个 .h
文件、9
个 .cpp
文件,都是 VLD
中心源码的一部分,以下 6
个文件用于 VLD
项目装备、依靠库的版别操控等:
vld.natvis
vld.rc
vld.vcxproj
vld.vcxproj.filters
vld.dll.dependency.x64.manifest
vld.dll.dependency.x86.manifest
以下两个批处理文件用于 VLD
的功用批量测验,并自动生成测验报告。
runalltests.bat
runtests.bat
6.2 文件夹 tests
这个文件夹用来存储 VLD
的测验工程代码以及运用示例工程代码,有 14
个子文件夹及别的 2
个文件。
-
Common.props
是VS
的特点办理文件,被多个VLD
测验工程所运用,运用介绍可参考 .vcxproj 和 .props 文件结构。 -
copydlls.bat
是批处理脚本,被用做为VLD
测验工程的预先生成事情(Pre-Build Event) ,将vld.ini
、vld_xx.dll
、vld_xx.pdb
、dbghelp.dll
、Microsoft.DTfW.DHL.manifest
这5
个依靠文件复制到指定目录。
6.3 文件夹 tests\basics(测验工程)
该文件夹的目录结构如下:
vld-master\src\tests\basics
Allocs.cpp
Allocs.h
basics.cpp
basics.vcxproj
basics.vcxproj.filters
basics_disabled.cpp
stdafx.cpp
stdafx.h
targetver.h
这是一个 VLD
测验工程,用来测验:当运用不同的内存分配函数(例如 malloc
、calloc
、placement new
等)时,VLD
能否正确检测出内存走漏。被测的内存分配函数详见 Allocs.h 文件 与 Allocs.cpp 文件。测验用例详见 basics.cpp 文件 与 basics_disabled.cpp 文件。
6.4 文件夹 tests\console(示例工程)
该文件夹的目录结构如下:
vld-master\src\tests\console
main.c
main.cpp
README.md
vldconsole.sln
vldconsole.vcxproj
vldconsole.vcxproj.filters
vldconsole_vs10.sln
这是一个 VLD
示例工程,用来演示如安在一般的操控台程序中运用 VLD
库,演示方针为:VLD
库不仅能检测出 C
程序中 malloc
引起的走漏(详见 main.c 文件),也能检测出 C++
程序中 new
引起的走漏(详见 main.cpp 文件)。
- 文件
vldconsole.sln
对应Visual Studio 2008
,VC
版别号为VC9.0
。 - 文件
vldconsole_vs10.sln
对应Visual Studio 2010
,VC
版别号为VC10.0
。
6.5 文件夹 tests\corruption(测验工程)
该文件夹的目录结构如下:
vld-master\src\tests\corruption
corruption.cpp
corruption.vcxproj
corruption.vcxproj.filters
stdafx.cpp
stdafx.h
targetver.h
Tests.cpp
Tests.h
这是一个 VLD
测验工程,用来测验:当内存分配函数与开释函数不匹配(例如 malloc
与 delete
配对运用)、分配的堆与开释的堆不匹配时,VLD
能否正确检测出内存走漏。被测的失配用法详见 Tests.h 文件 与 Tests.cpp 文件。测验用例详见 corruption.cpp 文件。
6.6 文件夹 tests\dynamic_app(测验工程)
该文件夹的目录结构如下:
vld-master\src\tests\dynamic_app
dynamic_app.cpp
dynamic_app.vcxproj
dynamic_app.vcxproj.filters
LoadTests.cpp
LoadTests.h
stdafx.cpp
stdafx.h
targetver.h
ThreadTest.cpp
ThreadTests.h
这是一个 VLD
测验工程,用来测验:当动态加载一般动态库与 MFC
动态库时,VLDEnableModule
及 VLDResolveCallstacks
功用是否正常,以及当在多线程中加载动态库时,VLDGetLeaksCount
及走漏检测功用是否正常。被测的动态加载用法详见 LoadTests.h 文件 与 LoadTests.cpp 文件,被测的多线程用法详见 ThreadTests.h 文件 与 ThreadTest.cpp 文件。测验用例详见 dynamic_app.cpp 文件。这一测验工程需依靠 dynamic.dll
与 test_mfc.dll
这两个动态库,它们由 tests
文件夹下的别的两个工程生成。
6.7 文件夹 tests\dynamic_dll(测验辅佐工程)
该文件夹的目录结构如下:
vld-master\src\tests\dynamic_dll
dllmain.cpp
dynamic.cpp
dynamic.h
dynamic.vcxproj
dynamic.vcxproj.filters
stdafx.cpp
stdafx.h
targetver.h
这是一个 VLD
测验辅佐工程,用来生成动态库 dynamic.dll
,然后将生成的动态库给其他测验工程做 VLD
功用测验。库顶用三种方法(malloc
、new
、new[]
)别离发生 6
处走漏,总共 18
处走漏,且库源码中未包括 vld.h
,详见 dynamic.h 文件 与 dynamic.cpp 文件。
6.8 文件夹 tests\mfc(示例工程)
该文件夹的目录结构如下:
vld-master\src\tests\mfc
│ resource.h
│ StdAfx.cpp
│ StdAfx.h
│ vldmfc.cpp
│ vldmfc.h
│ vldmfc.rc
│ vldmfc.sln
│ vldmfc.vcxproj
│ vldmfc.vcxproj.filters
│ vldmfcdlg.cpp
│ vldmfcdlg.h
│ vldmfc_vs10.sln
│
└─res
vldmfc.ico
vldmfc.rc2
这是一个 VLD
示例工程,用来演示如安在 MFC
程序中运用 VLD
库,演示方针为:VLD
库能检测出 MFC
程序中的内存走漏。它经过模态显现一个挑选对话框(详见 vldmfcdlg.h 文件 与 vldmfcdlg.cpp 文件),让用户挑选是否成心发生一个内存走漏(详见 vldmfc.h 文件 与 vldmfc.cpp 文件),然后经过检查操控台的 VLD
输出,来演示其内存走漏检测功用。
- 文件
vldmfc.sln
对应Visual Studio 2008
,VC
版别号为VC9.0
。 - 文件
vldmfc_vs10.sln
对应Visual Studio 2010
,VC
版别号为VC10.0
。
6.9 文件夹 tests\mfc_dll(测验辅佐工程)
该文件夹的目录结构如下:
vld-master\src\tests\mfc_dll
│ mfc.cpp
│ mfc.def
│ mfc.h
│ mfc.rc
│ mfc.vcxproj
│ mfc.vcxproj.filters
│ Resource.h
│ stdafx.cpp
│ stdafx.h
│ targetver.h
│
└─res
mfc.rc2
这是一个 VLD
测验辅佐工程,用来生成动态库 test_mfc.dll
,然后将生成的动态库给其他测验工程做 VLD
功用测验。库顶用三种方法(new
、CString initialisation with string
、new[]
)发生总共 11
处走漏,且库源码中未包括 vld.h
,详见 mfc.cpp 文件。
6.10 文件夹 tests\suite(测验工程)
该文件夹的目录结构如下:
vld-master\src\tests\suite
testsuite.cpp
testsuite.vcxproj
testsuite.vcxproj.filters
testsuite.vcxproj.vspscc
这是一个 VLD
测验工程,只要一个 cpp
文件,用来测验:在多线程(运用 _beginthreadex
创立线程)、多种分配方法(例如 new
、malloc
、HeapAlloc
等)、不同递归深度、随机分配内存、随机开释内存时,VLD
能否按需正确检测出内存走漏(测验过程中也会随机地配对运用 VLDDisable
与 VLDRestore
忽略一些走漏,详见 testsuite.cpp 第 220~225 行)。
6.11 文件夹 tests\vld_ComTest(测验辅佐工程)
该文件夹的目录结构如下:
vld-master\src\tests\vld_ComTest
ComTest.aps
ComTest.cpp
ComTest.def
ComTest.idl
ComTest.rc
ComTest.rgs
ComTest.sln
ComTest_vs14.vcxproj
ComTest_vs14.vcxproj.filters
dlldata.c
dllmain.cpp
dllmain.h
MyMath.cpp
MyMath.h
MyMath.rgs
Resource.h
stdafx.cpp
stdafx.h
targetver.h
xdlldata.c
xdlldata.h
这是一个 VLD
测验辅佐工程,用于测验 VLD
能否检测到 COM-based leaks
,工程运行后生成了一个 COM
组件 ComTest.dll
,源文件 stdafx.h
中有 #include <vld.h>
,但其接口函数并没有成心发生内存走漏(如下,详见 MyMath.cpp 文件),且在 tests
文件夹下未发现有工程运用了 ComTest.dll
。
STDMETHODIMP CMyMath::Test(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return S_OK;
}
6.12 文件夹 tests\vld_dll1(测验辅佐工程)
该文件夹的目录结构如下:
vld-master\src\tests\vld_dll1
dllmain.cpp
stdafx.cpp
stdafx.h
targetver.h
vld_dll1_vs14.vcxproj
vld_dll1_vs14.vcxproj.filters
这是一个 VLD
测验辅佐工程,用来生成动态库 vld_dll1.dll
,然后将生成的动态库给其他测验工程做 VLD
功用测验,这个库源码中包括了 vld.h
,且运用了 VLD_FORCE_ENABLE
宏。库顶用 malloc
发生 1
处走漏,详见 dllmain.cpp 文件。
6.13 文件夹 tests\vld_dll2(测验辅佐工程)
该文件夹的目录结构如下:
vld-master\src\tests\vld_dll2
dllmain.cpp
stdafx.cpp
stdafx.h
targetver.h
vld_dll2_vs14.vcxproj
vld_dll2_vs14.vcxproj.filters
这是一个 VLD
测验辅佐工程,用来生成动态库 vld_dll2.dll
,然后将生成的动态库给其他测验工程做 VLD
功用测验。与 vld_dll1.dll
一样,这个库源码中(stdafx.h 文件)包括了 vld.h
,且运用了 VLD_FORCE_ENABLE
宏。库顶用 malloc
发生 1
处走漏,详见 dllmain.cpp 文件。
6.14 文件夹 tests\vld_main(示例工程)
该文件夹的目录结构如下:
vld-master\src\tests\vld_main
stdafx.cpp
stdafx.h
targetver.h
vld_main.cpp
vld_main_vs14.vcxproj
vld_main_vs14.vcxproj.filters
这是一个 VLD
示例工程,工程运行后生成了 vld_main.exe
,演示方针为:VLD
能检测出全局静态变量的内存走漏,详见 vld_main.cpp 文件。
6.15 文件夹 tests\vld_main_test(测验工程)
该文件夹的目录结构如下:
vld-master\src\tests\vld_main_test
stdafx.cpp
stdafx.h
targetver.h
vld_main_test.cpp
vld_main_test_vs14.vcxproj
vld_main_test_vs14.vcxproj.filters
这是一个 VLD
测验工程,用来测验:VLD
对全局静态变量的走漏检测功用是否正常,被测程序为 tests\vld_main
工程生成的 vld_main.exe
。测验用例详见 vld_main_test.cpp 文件。
6.16 文件夹 tests\vld_unload(测验工程)
该文件夹的目录结构如下:
vld-master\src\tests\vld_unload
stdafx.cpp
stdafx.h
targetver.h
vld_unload.cpp
vld_unload_vs14.vcxproj
vld_unload_vs14.vcxproj.filters
这是一个 VLD
测验工程,用来测验:主工程未包括 vld.h
,但多个被调的动态库包括 vld.h
时,对各 dll
进行动态装置、动态卸载的情况下,VLD
的走漏检测功用是否正常。测验用例详见 vld_unload.cpp 文件。这一测验工程需依靠 vld_dll1.dll
与 vld_dll2.dll
这两个动态库,它们由 tests
文件夹下的别的两个工程生成。
7 其他 12 个文件
源码根目录下还有以下 12
个文件:
vld-master
.editorconfig
.gitignore
.mailmap
appveyor.yml
AUTHORS.txt
CHANGES.txt
change_toolset.ps1
COPYING.txt
README.md
vld.ini
vld_vs14.sln
vld_vs14_wo_mfc.sln
7.1 文件 .editorconfig
这个文件用来一致代码款式,协助开发者保护编辑器编码风格,以下几个材料对了解该文件的效果有协助:
- 牧之博客-.editorconfig 文件。
- Microsoft-运用 EditorConfig 创立可移植的自定义编辑器设置。
- EditorConfig。
7.2 文件 .gitignore
这个文件用来指明源码上传 Git
时,哪些文件应该被忽略,这些文件无需纳入 Git
办理。Github-gitignore 上有一些 .gitignore
文件模板,需要时可以拿来用。
7.3 文件 .mailmap
这个文件用于将作者姓名和电子邮件映射到单个规范值,以下几个材料对了解该文件的效果有协助:
- 腾讯云开发者社区-怎么运用git .mailmap显现作者组织?。
- w3cschool-git-check-mailmap。
7.4 文件 appveyor.yml
这个文件用于继续集成服务,自动构建项目,以下几个材料对了解该文件的效果有协助:
- appveyor-docs。
- 51CTO博客-运用Appveyor继续集成博客。
7.5 文件 AUTHORS.txt
这个文件用于罗列开发者清单。
7.6 文件 CHANGES.txt
这个文件用于记载版别迭代日志,各版别更新提要。
7.7 文件 change_toolset.ps1
这个文件是一个 PowerShell
脚本,阅读内容可知这个脚本是用来批量更改 Toolset
值的。除 format.vcxproj
与 vld.vcxproj
这两个文件外,它能修改当时目录及其所有子文件夹中的 vcxproj
文件,将文件中的 <PlatformToolset>
值修改为指定值。同时,修改 .\src\tests\Common.props
文件中的 <VldToolset>
值为指定值。关于 <PlatformToolset>
,可参考 Microsoft-platform-toolset 以及 关于VS项目特点: Target Platform Version 和 Platform ToolSet。
7.8 文件 COPYING.txt
这是一份答应阐明文件,内容是 LGPL 2.1
开源协议。
7.9 文件 README.md
这个文件里对 VLD
的功用用途做了大致介绍,与 Github-VLD 上的介绍内容一样。
7.10 文件 vld.ini
这个是 VLD
库的装备文件,库的运用者需要用到,运用方法详见自己同系列文章。
7.11 文件 vld_vs14.sln
这个文件是 VLD
项目的解决方案文件,需用 Visual Studio 2015
翻开,内含 16
个子项目,包括 VLD
库项目、测验项目、示例项目,如下图所示:
各项目的简要介绍见下表,可以依据项目文件夹称号上翻本文章到介绍处。
标号 | 项目称号 | 对应文件夹称号 | 项目简介 |
---|---|---|---|
1 | dynamic |
vld-master\src\tests\dynamic_dll |
测验用 – 依靠库 |
2 | test_mfc |
vld-master\src\tests\mfc_dll |
测验用 – 依靠库 |
3 | vld_dll1 |
vld-master\src\tests\vld_dll1 |
测验用 – 依靠库 |
4 | vld_dll2 |
vld-master\src\tests\vld_dll2 |
测验用 – 依靠库 |
5 | libformat |
vld-master\lib\cppformat |
VLD – 输出格式化库 |
6 | libgtest |
vld-master\lib\gtest\msvc |
Google Test 测验结构 |
7 | ComTest |
vld-master\src\tests\vld_ComTest |
测验用-依靠库 |
8 | corruption |
vld-master\src\tests\corruption |
库功用测验 |
9 | dynamic_app |
vld-master\src\tests\dynamic_app |
库功用测验 |
10 | test_basics |
vld-master\src\tests\basics |
库功用测验 |
11 | testsuite |
vld-master\src\tests\suite |
库功用测验 |
12 | vld_main |
vld-master\src\tests\vld_main |
用法示例 |
13 | vld_main_test |
vld-master\src\tests\vld_main_test |
库功用测验 |
14 | vld_unload |
vld-master\src\tests\vld_unload |
库功用测验 |
15 | vldmfc |
vld-master\src\tests\mfc |
用法示例 |
16 | vld |
vld-master\src |
VLD – 库 |
7.12 文件 vld_vs14_wo_mfc.sln
这个文件也是 VLD
项目的解决方案文件,需用 Visual Studio 2015
翻开,内含 13
个子项目,包括 VLD
库项目、测验项目、示例项目,文件名中的 wo
是 without
的简写,表明没有 MFC
相关的测验项目(除了没有 test_mfc
、ComTest
、vldmfc
这三个项目外,其他地方与 vld_vs14.sln
一样),如下图所示: