<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1827476773;
        mso-list-type:hybrid;
        mso-list-template-ids:445049972 2051968986 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:\F0E8;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi all<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m currently migrating the projects to Visual Studio 2015. <o:p>
</o:p></p>
<p class="MsoNormal">Some errors occur with the new compiler for which I would like to get a review for the solution. The third part is about FDO generic Rdbms provider.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><i>Providers\GenericRdbms\Src\UnitTest\Common\FdoUpdateTest.cpp<o:p></o:p></i></p>
<p class="MsoNormal"><i>Providers\GenericRdbms\Src\UnitTest\Common\MessageTest.cpp<o:p></o:p></i></p>
<p class="MsoNormal"><b><i>Error:<o:p></o:p></i></b></p>
<p class="MsoNormal">The concatenation of adjacent wide or raw string literals (L"Hello"L"World") will require a space to be inserted (L"Hello" L"World"), because the prefix for the second string is now treated as a user-defined literal suffix.<o:p></o:p></p>
<p class="MsoNormal"><b><i>Solution</i></b><i>:<o:p></o:p></i></p>
<p class="MsoNormal">-> add spaces between concatenated strings<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><i>Providers\GenericRdbms\Src\Fdo\stdafx.h<o:p></o:p></i></p>
<p class="MsoNormal">error C2338: <hash_map> is deprecated and will be REMOVED. Please use <unordered_map>. You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning<o:p></o:p></p>
<p class="MsoNormal"><b><i>Solution</i></b><i>:</i><o:p></o:p></p>
<p class="MsoNormal">-> remove include of no required <hash_map><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><i>Providers\GenericRdbms\Src\Fdo\Connection\FdoRdbmsConnection.cpp<o:p></o:p></i></p>
<p class="MsoNormal">error C2137: The illegal empty character constant L'' was used.<o:p></o:p></p>
<p class="MsoNormal"><b><i>Solution</i></b><i>:</i><o:p></o:p></p>
<p class="MsoNormal">-> Instantiate the wchar_t string with L"" instead of the first character with L''<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><i>Providers\GenericRdbms\Src\Util\trace.cpp<o:p></o:p></i></p>
<p class="MsoNormal">error C2065: 'PATH_MAX': undeclared identifier<o:p></o:p></p>
<p class="MsoNormal"><b><i>Solution</i></b><i>:</i><o:p></o:p></p>
<p class="MsoNormal">-> PATH_MAX is not defined anymore in VC++ 2015<o:p></o:p></p>
<p class="MsoNormal">-> Add a new header file which contains this new constant (\Fdo\Unmanaged\Inc\Common\FdoLimits.h)<o:p></o:p></p>
<p class="MsoNormal">-> see "limits.h" from VC++ 2012<o:p></o:p></p>
<p class="MsoNormal">-> add additional inlcude path "(FDO)/Unmanaged/Inc" to the project<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><i>Providers\GenericRdbms\Src\ODBC\Odbc.vcxproj<o:p></o:p></i></p>
<p class="MsoNormal"><i>Providers\GenericRdbms\Src\UnitTest\UnitTestOdbc.vcxproj<o:p></o:p></i></p>
<p class="MsoNormal">(odbccp32.lib(dllload.obj) : error LNK2019: unresolved external symbol _vsnwprintf_s referenced in function StringCchPrintfW)<o:p></o:p></p>
<p class="MsoNormal">This is a breaking change in the Visual C++ runtime libraries in Visual Studio 2015. Mixing-and-matching object files compiled with different major versions of the Visual C++ libraries headers is not supported.
<o:p></o:p></p>
<p class="MsoNormal">For several releases, the STL headers have enforced this via a #pragma detect_mismatch. The CRT headers have not enforced this, but it is nonetheless not supported.
<o:p></o:p></p>
<p class="MsoNormal">In general, in cases where you want to support multiple major versions of Visual C++, we advise building libraries into DLLs in order to encapsulate CRT dependencies.<o:p></o:p></p>
<p class="MsoNormal">_vsnwprintf_s and other functions are not exported in appcrt140.dll, breaking linkage of static libraries. Add new library "legacy_stdio_definitions.lib" until it's fixed<o:p></o:p></p>
<p class="MsoNormal"><a href="https://connect.microsoft.com/VisualStudio/feedback/details/1134693/vs-2015-ctp-5-c-vsnwprintf-s-and-other-functions-are-not-exported-in-appcrt140-dll-breaking-linkage-of-static-libraries">https://connect.microsoft.com/VisualStudio/feedback/details/1134693/vs-2015-ctp-5-c-vsnwprintf-s-and-other-functions-are-not-exported-in-appcrt140-dll-breaking-linkage-of-static-libraries</a><o:p></o:p></p>
<p class="MsoNormal"><b><i>Solution</i></b><i>:</i><o:p></o:p></p>
<p class="MsoNormal">-> Add new library "legacy_stdio_definitions.lib"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best regards<o:p></o:p></p>
<p class="MsoNormal">Karsten<o:p></o:p></p>
</div>
</body>
</html>