Merge pull request #181 from Lukas-Heiligenbrunner/conanpackage

Conan package build
diff --git a/.gitignore b/.gitignore
index fc76104..f502038 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,10 @@
 stamp-h1
 *.la
 ac_config.h
+build
+temp
+.vs
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 012c740..a797610 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,14 +20,6 @@
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out)
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out)
 
-if(BUILD_SHARED_LIBS)
-	add_definitions(-DLIBCONFIG_EXPORTS)
-	add_definitions(-DLIBCONFIGXX_EXPORTS)
-else()
-	add_definitions(-DLIBCONFIG_STATIC)
-	add_definitions(-DLIBCONFIGXX_STATIC)
-endif()
-
 include(GNUInstallDirs)
 include(CheckSymbolExists)
 add_subdirectory(lib)
diff --git a/ChangeLog b/ChangeLog
index f1d835c..6e4b809 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,66 @@
-  ----- version 1.7.2 ------
-01-05  Mark Lindner  <markl@avalon>
+
+----- version 1.7.3 ------
+
+2021-06-19  Mark Lindner  <markl@avalon>
+
+	* lib/libconfig.c - Fixed double-free of config->filenames;
+	  fixed implementation of config_setting_lookup() to correctly return
+	  NULL instead of the passed-in setting if the specified path was not
+	  found
+	* configure.ac, lib/Makefile.am - bump version numbers
+
+2021-04-28  Mark Lindner  <markl@avalon>
+
+	* lib/CMakeLists.txt - misc. fixes
+
+2021-04-22  Mark Lindner  <markl@avalon>
+
+	* Makefile.am, configure.ac - Added --disable-tests configure option
+
+2021-01-09  Mark Lindner  <markl@avalon>
+
+	* lib/CMakeLists.txt - misc. fixes
+
+2020-11-12  Mark Lindner  <markl@avalon>
+
+	* contrib/ls-config/README.md - typo corrections
+
+2020-10-03  Mark Lindner  <markl@avalon>
+
+	* *.vcxproj, *.sln - Updated for building x64 configuration.
+
+2020-07-02  Mark Lindner  <markl@avalon>
+
+	* lib/libconfig.h++, doc/libconfig.texi - added isString() convenience
+	  method
+
+2019-12-18  Mark Lindner  <markl@avalon>
+
+	* lib/libconfig.c, lib/libconfig.h, lib/libconfig.h++,
+	  tests/testdata/override_setting.cfg, tests/tests.c,
+	  doc/libconfig.texi - Added new ALLOW_OVERRIDES option.
+
+2019-12-17  Mark Lindner  <markl@avalon>
+
+	* CMakeLists.txt, tests/CMakeList.txt - various fixes
+	* lib/libconfig.c, lib/scanctx.c, lib/scanner.h, lib/scanner.l,
+	  lib/strvec.c, lib/strvec.h, lib/util.c, lib/util.h - prefix more
+	  internal functions with 'libconfig_'
+	* lib/scanner.c, lib/scanner.h - regenerated
+
+2019-12-14  Mark Lindner  <markl@avalon>
+
+	* lib/grammar.y, lib/scanner.l, lib/libconfig.c, lib/parsectx.h,
+	  lib/scanctx.h, lib/scanctx.c, lib/strbuf.c, lib/strbuf.h,
+	  lib/strvec.c, lib/strvec.h - prefix all internal functions with
+	  'libconfig_'
+	* lib/grammar.c, lib/grammar.h, lib/scanner.c, lib/scanner.h - regenerated
+	* lib/wincompat.h - Fix #define for snprintf for Visual Studio 2013
+	* lib/libconfig.h++, lib/libconfigcpp.c++ - Use noexcept in C++17
+
+----- version 1.7.2 ------
+
+2019-01-05  Mark Lindner  <markl@avalon>
 
 	* lib/libconfig.c - fixed slow leak in config_destroy()
 	* <multiple> - miscellaenous build file fixes
diff --git a/Makefile.am b/Makefile.am
index e94d3ec..684608d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,7 @@
 
 ACLOCAL_AMFLAGS = -I m4
 
-SUBDIRS = lib tinytest tests
+SUBDIRS = lib
 
 if BUILDDOC
 SUBDIRS += doc
@@ -11,6 +11,10 @@
 SUBDIRS += examples
 endif
 
+if BUILDTESTS
+SUBDIRS += tinytest tests
+endif
+
 .PHONY: dist-rpm
 
 dist-rpm: distcheck
diff --git a/configure.ac b/configure.ac
index 8a14855..6181ba5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 
-AC_INIT(libconfig, 1.7.2, hyperrealm@gmail.com, libconfig,
+AC_INIT(libconfig, 1.7.3, hyperrealm@gmail.com, libconfig,
 	[https://hyperrealm.github.io/libconfig/])
 AC_CONFIG_AUX_DIR([aux-build])
 AC_CONFIG_MACRO_DIR([m4])
@@ -123,6 +123,18 @@
 
 AM_CONDITIONAL(BUILDEXAMPLES, test x$doexamples = xyes)
 
+dotests=yes
+
+AC_ARG_ENABLE(tests,
+AS_HELP_STRING([--disable-tests], [Disable building of the tests]),
+[if test "$enableval" = "no"; then dotests="no"; fi],
+[
+dotests=yes
+]
+)
+
+AM_CONDITIONAL(BUILDTESTS, test x$dotests = xyes)
+
 dnl Check for MinGW. Workaround for libtool's DLL_EXPORT stupidity.
 
 case "$target" in
diff --git a/contrib/ls-config/README.md b/contrib/ls-config/README.md
index 36ee5b1..3f08515 100644
--- a/contrib/ls-config/README.md
+++ b/contrib/ls-config/README.md
@@ -3,19 +3,19 @@
 
 Simple program to use libconfig9 configuration files in bash scripts
 
-You can use libcongig9 files directly invoking ls-config, or in bash script
-by sourcing lslib-core and then usinig simpe cfg_* functions. In this case 
+You can use libconfig9 files directly by invoking ls-config, or in bash scripts
+by sourcing lslib-core and then using simple cfg_* functions. In this case 
 You must set LS_EXEC to 1 before sourcing lslib-core
 
-Existing error codes available in doc/ folder.
+Existing error codes available in: doc/ folder.
 
-Samplne usage place in: sample/ folder.
+Sample usage available in: sample/ folder.
 
 Languages:
 - english
 - polish
 
-We need some help to build packaging for direff systems, and with transtalions 
-tu other languates.
+We need some help to build packaging for different systems, and with translations 
+to other languages.
 
 Full changelog available in doc/changelog.txt
diff --git a/contrib/ls-config/src/ls-config.c b/contrib/ls-config/src/ls-config.c
index 154f33d..4db8966 100644
--- a/contrib/ls-config/src/ls-config.c
+++ b/contrib/ls-config/src/ls-config.c
@@ -255,7 +255,7 @@
 //set configuration path
 //@return int success
 //@param configFile - name (with path) of configuration fille
-//@param dataPath - path of configuation variable (in config file)
+//@param dataPath - path of configuration variable (in config file)
 //@param optflags - global options flags
 //@param dataString - data to store in configuration variable in string format
 //@param dataType - type of variable to save
@@ -765,7 +765,7 @@
 //unset configuration path
 //(remove variable from configuration file)
 //@return int success
-//@param char* configFile - the name (with path) of configuation file
+//@param char* configFile - the name (with path) of configuration file
 //@param char* configPath - path to configuration valriable to remove (unset)
 //@param struct flags optflags - global flags
 int unset_config(char *configFile, char *dataPath, struct flags optflags) {
diff --git a/doc/libconfig.texi b/doc/libconfig.texi
index 32d8985..9645077 100644
--- a/doc/libconfig.texi
+++ b/doc/libconfig.texi
@@ -6,8 +6,8 @@
 @setfilename libconfig.info
 @settitle libconfig
 
-@set edition 1.7.2
-@set update-date 5 Jan 2018
+@set edition 1.7.3
+@set update-date 20 Jun 2021
 @set subtitle-text A Library For Processing Structured Configuration Files
 @set author-text Mark A.@: Lindner
 
@@ -38,7 +38,7 @@
 
 @page
 @vskip 0pt plus 1filll
-Copyright @copyright{} 2004-2018  Mark A Lindner
+Copyright @copyright{} 2004-2021  Mark A Lindner
 
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
diff --git a/docs/dist/libconfig-1.7.3.tar.gz b/docs/dist/libconfig-1.7.3.tar.gz
new file mode 100644
index 0000000..424e971
--- /dev/null
+++ b/docs/dist/libconfig-1.7.3.tar.gz
Binary files differ
diff --git a/docs/index.md b/docs/index.md
index f40cc0c..d8ee9f0 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -37,5 +37,5 @@
 solution file.

 

 <center>

-<a href="dist/libconfig-1.7.2.tar.gz"><b>libconfig-1.7.2.tar.gz</b></a>

+<a href="dist/libconfig-1.7.3.tar.gz"><b>libconfig-1.7.3.tar.gz</b></a>

 </center>

diff --git a/docs/libconfig_manual.html b/docs/libconfig_manual.html
index 2b5da07..93ebec7 100644
--- a/docs/libconfig_manual.html
+++ b/docs/libconfig_manual.html
@@ -58,8 +58,8 @@
 
 <hr noshade size=6 color="black">
 <div align=right>A Library For Processing Structured Configuration Files<br>
-Version 1.7.2<br>
-5 Jan 2018</div>
+Version 1.7.3<br>
+20 Jun 2021</div>
 <br><br><br><br>
 <font size=+1>Mark A. Lindner</font>
 <hr size=3 noshade color="black">
@@ -1151,7 +1151,15 @@
 This option controls whether the <code>config_write_file()</code> function performs
 an <i>fsync</i> operation after writing the configuration and before closing the
 file. By default this option is turned off.
-</p></dd>
+</p>
+</dd>
+<dt><code>CONFIG_OPTION_ALLOW_OVERRIDES</code></dt>
+<dd><p>(<b>Since <i>v1.7.3</i></b>)
+This option controls whether duplicate settings override previous settings
+with the same name. If this option is turned off, duplicate settings are
+rejected. By default this option is turned off.
+</p>
+</dd>
 </dl>
 
 </dd></dl>
@@ -1699,13 +1707,19 @@
 
 <dl>
 <dt><a name="index-readFile-on-Config"></a>Method on Config: <em>void</em> <strong>readFile</strong> <em>(const&nbsp;char&nbsp;*&nbsp;<var>filename</var><!-- /@w -->)</em></dt>
-<dt><a name="index-writeFile-on-Config"></a>Method on Config: <em>void</em> <strong>writeFile</strong> <em>(const&nbsp;char&nbsp;*&nbsp;<var>filename</var><!-- /@w -->) const</em></dt>
+<dt><a name="index-readFile-on-Config-1"></a>Method on Config: <em>void</em> <strong>readFile</strong> <em>(const&nbsp;std::string&nbsp;&amp;<var>filename</var><!-- /@w -->)</em></dt>
 <dd>
 <p>The <code>readFile()</code> method reads and parses a configuration from the
 file named <var>filename</var>. A <code>ParseException</code> is thrown if a
 parse error occurs. A <code>FileIOException</code> is thrown if the file
 cannot be read.
 </p>
+</dd></dl>
+
+<dl>
+<dt><a name="index-writeFile-on-Config"></a>Method on Config: <em>void</em> <strong>writeFile</strong> <em>(const&nbsp;char&nbsp;*&nbsp;<var>filename</var><!-- /@w -->)</em></dt>
+<dt><a name="index-writeFile-on-Config-1"></a>Method on Config: <em>void</em> <strong>writeFile</strong> <em>(const&nbsp;std::string&nbsp;&amp;<var>filename</var><!-- /@w -->)</em></dt>
+<dd>
 <p>The <code>writeFile()</code> method writes the configuration to the file
 named <var>filename</var>. A <code>FileIOException</code> is thrown if the file cannot
 be written.
@@ -1850,6 +1864,13 @@
 default this option is turned off.
 </p>
 </dd>
+<dt><code>Config::OptionAllowOverrides</code></dt>
+<dd><p>(<b>Since <i>v1.7.3</i></b>)
+This option controls whether duplicate settings override previous settings
+with the same name. If this option is turned off, duplicate settings are
+rejected. By default this option is turned off.
+</p>
+</dd>
 </dl>
 
 </dd></dl>
@@ -2422,11 +2443,12 @@
 <dt><a name="index-isAggregate-on-Setting"></a>Method on Setting: <em>bool</em> <strong>isAggregate</strong> <em>() const</em></dt>
 <dt><a name="index-isScalar-on-Setting"></a>Method on Setting: <em>bool</em> <strong>isScalar</strong> <em>() const</em></dt>
 <dt><a name="index-isNumber-on-Setting"></a>Method on Setting: <em>bool</em> <strong>isNumber</strong> <em>() const</em></dt>
+<dt><a name="index-isString-on-Setting"></a>Method on Setting: <em>bool</em> <strong>isString</strong> <em>() const</em></dt>
 <dd>
 <p>These convenience methods test if a setting is of an aggregate type (a
 group, array, or list), of a scalar type (integer, 64-bit integer,
-floating point, boolean, or string), and of a number (integer, 64-bit
-integer, or floating point), respectively.
+floating point, boolean, or string), of a number (integer, 64-bit
+integer, or floating point), and of a string respectively.
 </p>
 </dd></dl>
 
@@ -3494,6 +3516,7 @@
 <tr><td></td><td valign="top"><a href="#index-isNumber-on-Setting"><code>isNumber on Setting</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-isRoot-on-Setting"><code>isRoot on Setting</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-isScalar-on-Setting"><code>isScalar on Setting</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-isString-on-Setting"><code>isString on Setting</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function-Index_fn_letter-L">L</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-LIBCONFIGXX_005fVER_005fMAJOR"><code>LIBCONFIGXX_VER_MAJOR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Version-Test-Macros">Version Test Macros</a></td></tr>
@@ -3571,6 +3594,7 @@
 <tr><th><a name="Function-Index_fn_letter-R">R</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-read-on-Config"><code>read on Config</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-readFile-on-Config"><code>readFile on Config</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-readFile-on-Config-1"><code>readFile on Config</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-readString-on-Config"><code>readString on Config</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-readString-on-Config-1"><code>readString on Config</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-remove-on-Setting"><code>remove on Setting</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
@@ -3597,6 +3621,7 @@
 <tr><th><a name="Function-Index_fn_letter-W">W</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-write-on-Config"><code>write on Config</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-writeFile-on-Config"><code>writeFile on Config</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-writeFile-on-Config-1"><code>writeFile on Config</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-C_002b_002b-API">The C++ API</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 </table>
 <table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Function-Index_fn_symbol-1"><b>~</b></a>
diff --git a/docs/libconfig_manual.pdf b/docs/libconfig_manual.pdf
index c3628b3..cc81e56 100644
--- a/docs/libconfig_manual.pdf
+++ b/docs/libconfig_manual.pdf
Binary files differ
diff --git a/examples/c++/cxx_example1.vcxproj b/examples/c++/cxx_example1.vcxproj
index 888ce63..2554593 100644
--- a/examples/c++/cxx_example1.vcxproj
+++ b/examples/c++/cxx_example1.vcxproj
@@ -1,21 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectName>c++_example1</ProjectName>

     <ProjectGuid>{A1DF518C-A515-45A3-9B67-7D49F616DECC}</ProjectGuid>

     <RootNamespace>cxx_example1</RootNamespace>

     <Keyword>Win32Proj</Keyword>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

@@ -24,31 +48,112 @@
     <CharacterSet>Unicode</CharacterSet>

     <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>Application</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

     <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

   </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)ds</TargetName>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

@@ -56,6 +161,8 @@
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <Link>

       <GenerateDebugInformation>true</GenerateDebugInformation>

@@ -64,14 +171,83 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIGXX_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

     <ClCompile>

       <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

       <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -79,6 +255,69 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIGXX_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemGroup>

     <ClCompile Include="example1.cpp" />

diff --git a/examples/c++/cxx_example2.vcxproj b/examples/c++/cxx_example2.vcxproj
index 398fb36..21e7f22 100644
--- a/examples/c++/cxx_example2.vcxproj
+++ b/examples/c++/cxx_example2.vcxproj
@@ -1,21 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectName>c++_example2</ProjectName>

     <ProjectGuid>{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}</ProjectGuid>

     <RootNamespace>cxx_example2</RootNamespace>

     <Keyword>Win32Proj</Keyword>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

@@ -24,31 +48,112 @@
     <CharacterSet>Unicode</CharacterSet>

     <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>Application</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

     <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

   </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)ds</TargetName>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

@@ -56,6 +161,8 @@
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <Link>

       <GenerateDebugInformation>true</GenerateDebugInformation>

@@ -64,14 +171,83 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIGXX_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

     <ClCompile>

       <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

       <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -79,6 +255,69 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIGXX_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemGroup>

     <ClCompile Include="example2.cpp" />

diff --git a/examples/c++/cxx_example3.vcxproj b/examples/c++/cxx_example3.vcxproj
index 395cb02..e35965f 100644
--- a/examples/c++/cxx_example3.vcxproj
+++ b/examples/c++/cxx_example3.vcxproj
@@ -1,21 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectName>c++_example3</ProjectName>

     <ProjectGuid>{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}</ProjectGuid>

     <RootNamespace>cxx_example3</RootNamespace>

     <Keyword>Win32Proj</Keyword>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

@@ -24,31 +48,112 @@
     <CharacterSet>Unicode</CharacterSet>

     <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>Application</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

     <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

   </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)ds</TargetName>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

@@ -56,6 +161,8 @@
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <Link>

       <GenerateDebugInformation>true</GenerateDebugInformation>

@@ -64,14 +171,87 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIGXX_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

     <ClCompile>

       <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

       <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -79,6 +259,73 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIGXX_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemGroup>

     <ClCompile Include="example3.cpp" />

diff --git a/examples/c++/cxx_example4.vcxproj b/examples/c++/cxx_example4.vcxproj
index 05aed45..7ab9d57 100644
--- a/examples/c++/cxx_example4.vcxproj
+++ b/examples/c++/cxx_example4.vcxproj
@@ -1,21 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectName>c++_example4</ProjectName>

     <ProjectGuid>{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}</ProjectGuid>

     <RootNamespace>cxx_example4</RootNamespace>

     <Keyword>Win32Proj</Keyword>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

@@ -24,31 +48,112 @@
     <CharacterSet>Unicode</CharacterSet>

     <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>Application</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

     <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

   </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)ds</TargetName>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

@@ -56,6 +161,8 @@
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <Link>

       <GenerateDebugInformation>true</GenerateDebugInformation>

@@ -64,14 +171,83 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\invalid.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\invalid.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\invalid.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIGXX_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>Default</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\invalid.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

     <ClCompile>

       <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

       <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -79,6 +255,69 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\invalid.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\invalid.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\invalid.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIGXX_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>Default</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c++\invalid.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemGroup>

     <ClCompile Include="example4.cpp" />

diff --git a/examples/c++/example1.cpp b/examples/c++/example1.cpp
index 1fb5ff6..feaab2d 100644
--- a/examples/c++/example1.cpp
+++ b/examples/c++/example1.cpp
@@ -33,6 +33,9 @@
 
 int main(int argc, char **argv)
 {
+  (void)argc;
+  (void)argv;
+
   Config cfg;
 
   // Read the file. If there is an error, report it and exit.
diff --git a/examples/c++/example2.cpp b/examples/c++/example2.cpp
index 13f862c..f4ebe79 100644
--- a/examples/c++/example2.cpp
+++ b/examples/c++/example2.cpp
@@ -34,6 +34,9 @@
 
 int main(int argc, char **argv)
 {
+  (void)argc;
+  (void)argv;
+
   static const char *output_file = "updated.cfg";
 
   Config cfg;
diff --git a/examples/c++/example3.cpp b/examples/c++/example3.cpp
index da5caf5..1732a86 100644
--- a/examples/c++/example3.cpp
+++ b/examples/c++/example3.cpp
@@ -33,6 +33,9 @@
 
 int main(int argc, char **argv)
 {
+  (void)argc;
+  (void)argv;
+
   static const char *output_file = "newconfig.cfg";
   Config cfg;
 
diff --git a/examples/c++/example4.cpp b/examples/c++/example4.cpp
index b23f4c5..7ac550b 100644
--- a/examples/c++/example4.cpp
+++ b/examples/c++/example4.cpp
@@ -33,6 +33,9 @@
 
 int main(int argc, char **argv)
 {
+  (void)argc;
+  (void)argv;
+
   Config cfg;
 
   try
diff --git a/examples/c/example1.vcxproj b/examples/c/example1.vcxproj
index 8fba52a..df6b234 100644
--- a/examples/c/example1.vcxproj
+++ b/examples/c/example1.vcxproj
@@ -1,21 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectName>c_example1</ProjectName>

     <ProjectGuid>{454984C5-C302-4CE2-9B17-15B96E05E120}</ProjectGuid>

     <RootNamespace>c_example1</RootNamespace>

     <Keyword>Win32Proj</Keyword>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

@@ -24,31 +48,112 @@
     <CharacterSet>Unicode</CharacterSet>

     <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>Application</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

     <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

   </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <TargetName>$(ProjectName)d</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)ds</TargetName>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

@@ -56,6 +161,8 @@
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <Link>

       <GenerateDebugInformation>true</GenerateDebugInformation>

@@ -64,14 +171,83 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIG_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

     <ClCompile>

       <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

       <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -79,6 +255,69 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIG_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemGroup>

     <ClCompile Include="example1.c" />

diff --git a/examples/c/example2.vcxproj b/examples/c/example2.vcxproj
index 6fa9ab6..bf199af 100644
--- a/examples/c/example2.vcxproj
+++ b/examples/c/example2.vcxproj
@@ -1,21 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectName>c_example2</ProjectName>

     <ProjectGuid>{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}</ProjectGuid>

     <RootNamespace>c_example2</RootNamespace>

     <Keyword>Win32Proj</Keyword>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

@@ -24,31 +48,112 @@
     <CharacterSet>Unicode</CharacterSet>

     <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>Application</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

     <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

   </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)ds</TargetName>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

@@ -56,6 +161,8 @@
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <Link>

       <GenerateDebugInformation>true</GenerateDebugInformation>

@@ -64,14 +171,83 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIG_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

     <ClCompile>

       <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

       <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -79,6 +255,69 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIG_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>xcopy $(SolutionDir)\examples\c\example.cfg $(TargetDir) /d</Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemGroup>

     <ClCompile Include="example2.c" />

diff --git a/examples/c/example3.vcxproj b/examples/c/example3.vcxproj
index 70959f7..1b1c92a 100644
--- a/examples/c/example3.vcxproj
+++ b/examples/c/example3.vcxproj
@@ -1,21 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectName>c_example3</ProjectName>

     <ProjectGuid>{93568409-C7AD-4A32-88E2-8883E10A8F7E}</ProjectGuid>

     <RootNamespace>c_example3</RootNamespace>

     <Keyword>Win32Proj</Keyword>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

@@ -24,31 +48,112 @@
     <CharacterSet>Unicode</CharacterSet>

     <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>Application</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

     <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

   </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)ds</TargetName>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

@@ -56,6 +161,8 @@
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <Link>

       <GenerateDebugInformation>true</GenerateDebugInformation>

@@ -64,14 +171,87 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIG_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

     <ClCompile>

       <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

       <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

@@ -79,6 +259,73 @@
       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

     </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../../lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;LIBCONFIG_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <PostBuildEvent>

+      <Command>

+      </Command>

+    </PostBuildEvent>

   </ItemDefinitionGroup>

   <ItemGroup>

     <ClCompile Include="example3.c" />

diff --git a/examples/c/example4.c b/examples/c/example4.c
index 05396c5..1f8b0c0 100644
--- a/examples/c/example4.c
+++ b/examples/c/example4.c
@@ -132,6 +132,8 @@
   }
 
   config_write(&cfg, stdout);
+   
+  config_destroy(&cfg);
 
   return(EXIT_SUCCESS);
 }
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index a1d5778..fb7f095 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -28,7 +28,7 @@
     ${libsrc}
     libconfigcpp.cc)
 
-if(CMAKE_HOST_WIN32)
+if(MSVC)
     set(libname "libconfig")
 else()
     set(libname "config")
@@ -47,15 +47,28 @@
 
 set_target_properties(${libname}
     PROPERTIES LINKER_LANGUAGE C
+        SOVERSION "${libconfig_VERSION_MAJOR}"
+        VERSION "${libconfig_VERSION}"
+        DEFINE_SYMBOL LIBCONFIG_EXPORTS
         PUBLIC_HEADER "${libinc}")
 set_target_properties(${libname}++
     PROPERTIES LINKER_LANGUAGE CXX
+        SOVERSION "${libconfig_VERSION_MAJOR}"
+        DEFINE_SYMBOL LIBCONFIGXX_EXPORTS
+        VERSION "${libconfig_VERSION}"
         PUBLIC_HEADER "${libinc_cpp}")
 
 #check_symbol_exists(uselocale "locale.h" HAVE_USELOCALE)
 #check_symbol_exists(newlocale "locale.h" HAVE_NEWLOCALE)
 #check_symbol_exists(freelocale "locale.h" HAVE_FREELOCALE)
 
+if(BUILD_SHARED_LIBS)
+    target_compile_definitions(${libname}++ PRIVATE LIBCONFIG_STATIC)
+else()
+    target_compile_definitions(${libname} PUBLIC LIBCONFIG_STATIC)
+    target_compile_definitions(${libname}++ PUBLIC LIBCONFIGXX_STATIC)
+endif()
+
 if(HAVE_USELOCALE)
 target_compile_definitions(${libname}
     PRIVATE "HAVE_USELOCALE")
@@ -71,21 +84,23 @@
     PRIVATE "HAVE_FREELOCALE")
 endif()
 
-target_compile_definitions(${libname}
-    PRIVATE
-        _CRT_SECURE_NO_DEPRECATE
-        YY_NO_UNISTD_H
-        YY_USE_CONST )
+if(MSVC)
+    target_compile_definitions(${libname}
+        PRIVATE
+            _CRT_SECURE_NO_DEPRECATE
+            YY_NO_UNISTD_H
+            YY_USE_CONST )
 
-target_compile_definitions(${libname}++
-    PRIVATE
-        _CRT_SECURE_NO_DEPRECATE
-        YY_NO_UNISTD_H
-        YY_USE_CONST )
+    target_compile_definitions(${libname}++
+        PRIVATE
+            _CRT_SECURE_NO_DEPRECATE
+            YY_NO_UNISTD_H
+            YY_USE_CONST )
+endif()
 
-if(CMAKE_HOST_WIN32)
-    target_link_libraries(${libname} Shlwapi.lib)
-    target_link_libraries(${libname}++ Shlwapi.lib)
+if(WIN32)
+    target_link_libraries(${libname} shlwapi)
+    target_link_libraries(${libname}++ shlwapi)
 endif()
 
 target_include_directories(${libname}
diff --git a/lib/Makefile.am b/lib/Makefile.am
index eb8ac36..ce4c599 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -18,7 +18,7 @@
 #
 # For more info see section 6.3 of the GNU Libtool Manual.
 
-VERINFO = -version-info 11:2:0
+VERINFO = -version-info 12:0:1
 
 ## Flex
 PARSER_PREFIX = libconfig_yy
diff --git a/lib/libconfig++.vcxproj b/lib/libconfig++.vcxproj
index 42b2194..0983b19 100644
--- a/lib/libconfig++.vcxproj
+++ b/lib/libconfig++.vcxproj
@@ -1,20 +1,44 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectGuid>{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}</ProjectGuid>

     <RootNamespace>libconfig_c</RootNamespace>

     <Keyword>Win32Proj</Keyword>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

@@ -23,44 +47,129 @@
     <CharacterSet>Unicode</CharacterSet>

     <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>DynamicLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>DynamicLibrary</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

     <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>DynamicLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

   </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

     <LinkIncremental>true</LinkIncremental>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <LinkIncremental>true</LinkIncremental>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <LinkIncremental>true</LinkIncremental>

+    <TargetName>$(ProjectName)ds</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <LinkIncremental>true</LinkIncremental>

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

       <Optimization>Disabled</Optimization>

       <AdditionalIncludeDirectories>lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>LIBCONFIGXX_EXPORTS;LIBCONFIG_STATIC;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;LIBCONFIGXX_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <Link>

       <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

-      <OutputFile>$(OutDir)$(ProjectName)_d.dll</OutputFile>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

       <GenerateDebugInformation>true</GenerateDebugInformation>

       <SubSystem>Windows</SubSystem>

       <RandomizedBaseAddress>false</RandomizedBaseAddress>

@@ -68,11 +177,72 @@
       <TargetMachine>MachineX86</TargetMachine>

     </Link>

   </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;WIN64;LIBCONFIGXX_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Windows</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;LIBCONFIGXX_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <OutputFile>$(OutDir)$(ProjectName)_d.dll</OutputFile>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Windows</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;WIN64;LIBCONFIGXX_STATIC;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <OutputFile>$(OutDir)$(ProjectName)_d.dll</OutputFile>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Windows</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+  </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

     <ClCompile>

       <AdditionalIncludeDirectories>lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>LIBCONFIGXX_EXPORTS;LIBCONFIG_STATIC;YY_NO_UNISTD_H;YY_USE_CONST;_CRT_SECURE_NO_DEPRECATE;_STDLIB_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;LIBCONFIGXX_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;_CRT_SECURE_NO_DEPRECATE;_STDLIB_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <Link>

       <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

@@ -81,6 +251,57 @@
       <RandomizedBaseAddress>false</RandomizedBaseAddress>

       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;WIN64;LIBCONFIGXX_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;_CRT_SECURE_NO_DEPRECATE;_STDLIB_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <OptimizeReferences>true</OptimizeReferences>

+      <EnableCOMDATFolding>true</EnableCOMDATFolding>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;LIBCONFIGXX_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;_CRT_SECURE_NO_DEPRECATE;_STDLIB_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <OptimizeReferences>true</OptimizeReferences>

+      <EnableCOMDATFolding>true</EnableCOMDATFolding>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;WIN64;LIBCONFIGXX_STATIC;YY_NO_UNISTD_H;YY_USE_CONST;_CRT_SECURE_NO_DEPRECATE;_STDLIB_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <OptimizeReferences>true</OptimizeReferences>

+      <EnableCOMDATFolding>true</EnableCOMDATFolding>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

     </Link>

   </ItemDefinitionGroup>

   <ItemGroup>

@@ -113,4 +334,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

   <ImportGroup Label="ExtensionTargets">

   </ImportGroup>

-</Project>

+</Project>
\ No newline at end of file
diff --git a/lib/libconfig.c b/lib/libconfig.c
index e26e5e8..2f3cbfa 100644
--- a/lib/libconfig.c
+++ b/lib/libconfig.c
@@ -731,7 +731,9 @@
 {
   /* Destroy the root setting (recursively) and then create a new one. */
   __config_setting_destroy(config->root);
+
   libconfig_strvec_delete(config->filenames);
+  config->filenames = NULL;
 
   config->root = __new(config_setting_t);
   config->root->type = CONFIG_TYPE_GROUP;
@@ -1216,7 +1218,7 @@
                                         const char *path)
 {
   const char *p = path;
-  config_setting_t *found;
+  config_setting_t *found = setting;
 
   for(;;)
   {
@@ -1227,20 +1229,18 @@
       break;
 
     if(*p == '[')
-      found = config_setting_get_elem(setting, atoi(++p));
+      found = config_setting_get_elem(found, atoi(++p));
     else
-      found = config_setting_get_member(setting, p);
+      found = config_setting_get_member(found, p);
 
     if(! found)
       break;
 
-    setting = found;
-
     while(! strchr(PATH_TOKENS, *p))
       p++;
   }
 
-  return(*p ? NULL : setting);
+  return(*p || (found == setting) ? NULL : found);
 }
 
 /* ------------------------------------------------------------------------- */
diff --git a/lib/libconfig.vcxproj b/lib/libconfig.vcxproj
index 2ab4e1d..5b34d21 100644
--- a/lib/libconfig.vcxproj
+++ b/lib/libconfig.vcxproj
@@ -1,28 +1,88 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectGuid>{1A234565-926D-49B2-83E4-D56E0C38C9F2}</ProjectGuid>

     <RootNamespace>libconfig</RootNamespace>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

     <ConfigurationType>DynamicLibrary</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>DynamicLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>DynamicLibrary</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>DynamicLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

@@ -30,26 +90,114 @@
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <TargetName>$(ProjectName)d</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)ds</TargetName>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

       <PreprocessorDefinitions>LIBCONFIG_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <GenerateMapFile>true</GenerateMapFile>

+      <MapExports>true</MapExports>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention />

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <PreprocessorDefinitions>WIN64;LIBCONFIG_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <GenerateMapFile>true</GenerateMapFile>

+      <MapExports>true</MapExports>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <Link>

       <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

@@ -58,19 +206,85 @@
       <GenerateMapFile>true</GenerateMapFile>

       <MapExports>true</MapExports>

       <RandomizedBaseAddress>false</RandomizedBaseAddress>

-      <DataExecutionPrevention />

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <PreprocessorDefinitions>WIN64;LIBCONFIG_STATIC;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <OutputFile>$(OutDir)$(ProjectName)_d.dll</OutputFile>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <GenerateMapFile>true</GenerateMapFile>

+      <MapExports>true</MapExports>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

     </Link>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

     <ClCompile>

-      <PreprocessorDefinitions>LIBCONFIG_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;_CRT_SECURE_NO_DEPRECATE;_STDLIB_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>LIBCONFIG_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_STDLIB_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

       <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <Link>

       <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

       <RandomizedBaseAddress>false</RandomizedBaseAddress>

       <DataExecutionPrevention />

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <PreprocessorDefinitions>WIN64;LIBCONFIG_EXPORTS;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_STDLIB_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <PreprocessorDefinitions>LIBCONFIG_STATIC;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_STDLIB_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <PreprocessorDefinitions>WIN64;LIBCONFIG_STATIC;YY_NO_UNISTD_H;YY_USE_CONST;WIN32;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_STDLIB_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

     </Link>

   </ItemDefinitionGroup>

   <ItemGroup>

@@ -100,4 +314,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

   <ImportGroup Label="ExtensionTargets">

   </ImportGroup>

-</Project>

+</Project>
\ No newline at end of file
diff --git a/lib/libconfigcpp.c++ b/lib/libconfigcpp.c++
index 9cdee4d..add44f5 100644
--- a/lib/libconfigcpp.c++
+++ b/lib/libconfigcpp.c++
@@ -42,6 +42,7 @@
                                    const char *path,
                                    const char **error)
 {
+  (void)include_dir;
   Config *self = reinterpret_cast<Config *>(config_get_hook(config));
   return(self->evaluateIncludePath(path, error));
 }
diff --git a/libconfig_vs2017.sln b/libconfig_vs2017.sln
index 7e22a26..b62c5b4 100644
--- a/libconfig_vs2017.sln
+++ b/libconfig_vs2017.sln
@@ -27,54 +27,192 @@
 EndProject

 Global

 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+		Debug_Static|Win32 = Debug_Static|Win32

+		Debug_Static|x64 = Debug_Static|x64

 		Debug|Win32 = Debug|Win32

+		Debug|x64 = Debug|x64

+		Release_Static|Win32 = Release_Static|Win32

+		Release_Static|x64 = Release_Static|x64

 		Release|Win32 = Release|Win32

+		Release|x64 = Release|x64

 	EndGlobalSection

 	GlobalSection(ProjectConfigurationPlatforms) = postSolution

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{454984C5-C302-4CE2-9B17-15B96E05E120}.Debug|Win32.ActiveCfg = Debug|Win32

 		{454984C5-C302-4CE2-9B17-15B96E05E120}.Debug|Win32.Build.0 = Debug|Win32

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Debug|x64.ActiveCfg = Debug|x64

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Debug|x64.Build.0 = Debug|x64

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Release_Static|x64.Build.0 = Release_Static|x64

 		{454984C5-C302-4CE2-9B17-15B96E05E120}.Release|Win32.ActiveCfg = Release|Win32

 		{454984C5-C302-4CE2-9B17-15B96E05E120}.Release|Win32.Build.0 = Release|Win32

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Release|x64.ActiveCfg = Release|x64

+		{454984C5-C302-4CE2-9B17-15B96E05E120}.Release|x64.Build.0 = Release|x64

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Debug|Win32.ActiveCfg = Debug|Win32

 		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Debug|Win32.Build.0 = Debug|Win32

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Debug|x64.ActiveCfg = Debug|x64

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Debug|x64.Build.0 = Debug|x64

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Release_Static|x64.Build.0 = Release_Static|x64

 		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Release|Win32.ActiveCfg = Release|Win32

 		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Release|Win32.Build.0 = Release|Win32

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Release|x64.ActiveCfg = Release|x64

+		{1A234565-926D-49B2-83E4-D56E0C38C9F2}.Release|x64.Build.0 = Release|x64

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Debug|Win32.ActiveCfg = Debug|Win32

 		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Debug|Win32.Build.0 = Debug|Win32

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Debug|x64.ActiveCfg = Debug|x64

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Debug|x64.Build.0 = Debug|x64

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Release_Static|x64.Build.0 = Release_Static|x64

 		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Release|Win32.ActiveCfg = Release|Win32

 		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Release|Win32.Build.0 = Release|Win32

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Release|x64.ActiveCfg = Release|x64

+		{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Release|x64.Build.0 = Release|x64

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Debug|Win32.ActiveCfg = Debug|Win32

 		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Debug|Win32.Build.0 = Debug|Win32

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Debug|x64.ActiveCfg = Debug|x64

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Debug|x64.Build.0 = Debug|x64

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Release_Static|x64.Build.0 = Release_Static|x64

 		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Release|Win32.ActiveCfg = Release|Win32

 		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Release|Win32.Build.0 = Release|Win32

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Release|x64.ActiveCfg = Release|x64

+		{E4B1E9C1-E319-4A23-A6EB-85D74AB59BBE}.Release|x64.Build.0 = Release|x64

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Debug|Win32.ActiveCfg = Debug|Win32

 		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Debug|Win32.Build.0 = Debug|Win32

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Debug|x64.ActiveCfg = Debug|x64

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Debug|x64.Build.0 = Debug|x64

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Release_Static|x64.Build.0 = Release_Static|x64

 		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Release|Win32.ActiveCfg = Release|Win32

 		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Release|Win32.Build.0 = Release|Win32

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Release|x64.ActiveCfg = Release|x64

+		{93568409-C7AD-4A32-88E2-8883E10A8F7E}.Release|x64.Build.0 = Release|x64

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Debug|Win32.ActiveCfg = Debug|Win32

 		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Debug|Win32.Build.0 = Debug|Win32

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Debug|x64.ActiveCfg = Debug|x64

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Debug|x64.Build.0 = Debug|x64

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Release_Static|x64.Build.0 = Release_Static|x64

 		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Release|Win32.ActiveCfg = Release|Win32

 		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Release|Win32.Build.0 = Release|Win32

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Release|x64.ActiveCfg = Release|x64

+		{A1DF518C-A515-45A3-9B67-7D49F616DECC}.Release|x64.Build.0 = Release|x64

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Debug|Win32.ActiveCfg = Debug|Win32

 		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Debug|Win32.Build.0 = Debug|Win32

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Debug|x64.ActiveCfg = Debug|x64

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Debug|x64.Build.0 = Debug|x64

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Release_Static|x64.Build.0 = Release_Static|x64

 		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Release|Win32.ActiveCfg = Release|Win32

 		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Release|Win32.Build.0 = Release|Win32

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Release|x64.ActiveCfg = Release|x64

+		{DEBD09F1-33A1-41A9-9506-BC3E6FD053FD}.Release|x64.Build.0 = Release|x64

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Debug|Win32.ActiveCfg = Debug|Win32

 		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Debug|Win32.Build.0 = Debug|Win32

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Debug|x64.ActiveCfg = Debug|x64

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Debug|x64.Build.0 = Debug|x64

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Release_Static|x64.Build.0 = Release_Static|x64

 		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Release|Win32.ActiveCfg = Release|Win32

 		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Release|Win32.Build.0 = Release|Win32

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Release|x64.ActiveCfg = Release|x64

+		{8F2C54DE-BCC8-4CC7-81F3-FD0C04E8D5AE}.Release|x64.Build.0 = Release|x64

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Debug|Win32.ActiveCfg = Debug|Win32

 		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Debug|Win32.Build.0 = Debug|Win32

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Debug|x64.ActiveCfg = Debug|x64

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Debug|x64.Build.0 = Debug|x64

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Release_Static|x64.Build.0 = Release_Static|x64

 		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Release|Win32.ActiveCfg = Release|Win32

 		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Release|Win32.Build.0 = Release|Win32

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Release|x64.ActiveCfg = Release|x64

+		{F631BE25-B384-4061-B7D1-E0C0E77D3A0C}.Release|x64.Build.0 = Release|x64

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Debug|Win32.ActiveCfg = Debug|Win32

 		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Debug|Win32.Build.0 = Debug|Win32

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Debug|x64.ActiveCfg = Debug|x64

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Debug|x64.Build.0 = Debug|x64

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Release_Static|x64.Build.0 = Release_Static|x64

 		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Release|Win32.ActiveCfg = Release|Win32

 		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Release|Win32.Build.0 = Release|Win32

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Release|x64.ActiveCfg = Release|x64

+		{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}.Release|x64.Build.0 = Release|x64

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Debug_Static|Win32.ActiveCfg = Debug_Static|Win32

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Debug_Static|Win32.Build.0 = Debug_Static|Win32

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Debug_Static|x64.ActiveCfg = Debug_Static|x64

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Debug_Static|x64.Build.0 = Debug_Static|x64

 		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Debug|Win32.ActiveCfg = Debug|Win32

 		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Debug|Win32.Build.0 = Debug|Win32

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Debug|x64.ActiveCfg = Debug|x64

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Debug|x64.Build.0 = Debug|x64

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Release_Static|Win32.ActiveCfg = Release_Static|Win32

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Release_Static|Win32.Build.0 = Release_Static|Win32

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Release_Static|x64.ActiveCfg = Release_Static|x64

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Release_Static|x64.Build.0 = Release_Static|x64

 		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Release|Win32.ActiveCfg = Release|Win32

 		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Release|Win32.Build.0 = Release|Win32

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Release|x64.ActiveCfg = Release|x64

+		{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}.Release|x64.Build.0 = Release|x64

 	EndGlobalSection

 	GlobalSection(SolutionProperties) = preSolution

 		HideSolutionNode = FALSE

diff --git a/tests/tests.vcxproj b/tests/tests.vcxproj
index 61791f4..dca5060 100644
--- a/tests/tests.vcxproj
+++ b/tests/tests.vcxproj
@@ -1,21 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectName>libconfig_tests</ProjectName>

     <ProjectGuid>{E4FF1E84-9D5A-4A45-A5E5-8B99CA895172}</ProjectGuid>

     <RootNamespace>libconfig_tests</RootNamespace>

     <Keyword>Win32Proj</Keyword>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

@@ -24,31 +48,112 @@
     <CharacterSet>Unicode</CharacterSet>

     <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>Application</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

     <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

   </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)ds</TargetName>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>

-    <IntDir>$(ProjectName).$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

@@ -56,6 +161,8 @@
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <Link>

       <GenerateDebugInformation>true</GenerateDebugInformation>

@@ -63,6 +170,64 @@
       <RandomizedBaseAddress>false</RandomizedBaseAddress>

       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../lib;../tinytest;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../lib;../tinytest;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;LIBCONFIG_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../lib;../tinytest;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;LIBCONFIG_STATIC;WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <CompileAs>CompileAsC</CompileAs>

+      <Optimization>Disabled</Optimization>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

     </Link>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

@@ -70,14 +235,68 @@
       <AdditionalIncludeDirectories>../lib;../tinytest;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

       <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <Link>

       <SubSystem>Console</SubSystem>

       <RandomizedBaseAddress>false</RandomizedBaseAddress>

       <DataExecutionPrevention />

       <TargetMachine>MachineX86</TargetMachine>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../lib;../tinytest;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../lib;../tinytest;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;LIBCONFIG_STATIC;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>../lib;../tinytest;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>LIBCONFIGXX_STATIC;LIBCONFIG_STATIC;WIN64;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <CompileAs>CompileAsC</CompileAs>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <SubSystem>Console</SubSystem>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+      <DataExecutionPrevention>

+      </DataExecutionPrevention>

+      <AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>

     </Link>

   </ItemDefinitionGroup>

   <ItemGroup>

diff --git a/tinytest/tinytest.vcxproj b/tinytest/tinytest.vcxproj
index 80952f1..bcb9a1a 100644
--- a/tinytest/tinytest.vcxproj
+++ b/tinytest/tinytest.vcxproj
@@ -1,21 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>

 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug_Static|Win32">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug_Static|x64">

+      <Configuration>Debug_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Debug|Win32">

       <Configuration>Debug</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Debug|x64">

+      <Configuration>Debug</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|Win32">

+      <Configuration>Release_Static</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release_Static|x64">

+      <Configuration>Release_Static</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

     <ProjectConfiguration Include="Release|Win32">

       <Configuration>Release</Configuration>

       <Platform>Win32</Platform>

     </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|x64">

+      <Configuration>Release</Configuration>

+      <Platform>x64</Platform>

+    </ProjectConfiguration>

   </ItemGroup>

   <PropertyGroup Label="Globals">

     <ProjectName>libtinytest</ProjectName>

     <ProjectGuid>{58F43D41-FE56-40E1-BB83-9CB8CDE0B7AA}</ProjectGuid>

     <RootNamespace>libtinytest</RootNamespace>

     <Keyword>Win32Proj</Keyword>

-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>

+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

@@ -24,44 +48,177 @@
     <CharacterSet>Unicode</CharacterSet>

     <WholeProgramOptimization>true</WholeProgramOptimization>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+    <WholeProgramOptimization>true</WholeProgramOptimization>

+  </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

     <ConfigurationType>StaticLibrary</ConfigurationType>

     <PlatformToolset>v141</PlatformToolset>

     <CharacterSet>Unicode</CharacterSet>

   </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="Configuration">

+    <ConfigurationType>StaticLibrary</ConfigurationType>

+    <PlatformToolset>v141</PlatformToolset>

+    <CharacterSet>Unicode</CharacterSet>

+  </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

   <ImportGroup Label="ExtensionSettings">

   </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

   </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+  </ImportGroup>

   <PropertyGroup Label="UserMacros" />

   <PropertyGroup>

     <_ProjectFileVersion>15.0.26919.1</_ProjectFileVersion>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

-    <OutDir>$(SolutionDir)$(ProjectName)\$(Configuration)\</OutDir>

-    <IntDir>$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)d</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)ds</TargetName>

   </PropertyGroup>

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <OutDir>$(SolutionDir)$(ProjectName)\$(Configuration)\</OutDir>

-    <IntDir>$(Configuration)\</IntDir>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+    <TargetName>$(ProjectName)s</TargetName>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <TargetName>$(ProjectName)ds</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <TargetName>$(ProjectName)s</TargetName>

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <OutDir>$(SolutionDir)build\$(Platform)\</OutDir>

+    <IntDir>$(SolutionDir)\temp\$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>

   </PropertyGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

     <ClCompile>

       <Optimization>Disabled</Optimization>

       <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <MinimalRebuild>true</MinimalRebuild>

       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

       <WarningLevel>Level3</WarningLevel>

       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

       <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+    <Link>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|Win32'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+    </ClCompile>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Static|x64'">

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>

+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

+      <OmitFramePointers>false</OmitFramePointers>

     </ClCompile>

   </ItemDefinitionGroup>

   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

@@ -69,10 +226,55 @@
       <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

       <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

-      <PrecompiledHeader />

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

       <WarningLevel>Level3</WarningLevel>

       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

       <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+    <Link>

+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>

+      <RandomizedBaseAddress>false</RandomizedBaseAddress>

+    </Link>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>

+      <OmitFramePointers>true</OmitFramePointers>

+    </ClCompile>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Static|x64'">

+    <ClCompile>

+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <WarningLevel>Level3</WarningLevel>

+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>

+      <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

   </ItemDefinitionGroup>

   <ItemGroup>