parser test project in MSVC2019
This commit is contained in:
		
							parent
							
								
									652c390483
								
							
						
					
					
						commit
						b9fd6a8d3d
					
				|  | @ -3,3 +3,7 @@ examples/.DS_Store | ||||||
| src/.DS_Store | src/.DS_Store | ||||||
| .vscode/settings.json | .vscode/settings.json | ||||||
| .vscode/c_cpp_properties.json | .vscode/c_cpp_properties.json | ||||||
|  | test/msvc/.vs | ||||||
|  | test/msvc/x64 | ||||||
|  | test/msvc/ConsoleApplication2.vcxproj.user | ||||||
|  | test/msvc/ConsoleApplication2.vcxproj.filters | ||||||
|  |  | ||||||
|  | @ -0,0 +1,218 @@ | ||||||
|  | // ConsoleApplication2.cpp : This file contains the 'main' function. Program execution begins and ends there.
 | ||||||
|  | //
 | ||||||
|  | 
 | ||||||
|  | #include <iostream> | ||||||
|  | 
 | ||||||
|  | typedef unsigned int word; | ||||||
|  | typedef uint8_t boolean; | ||||||
|  | typedef unsigned char byte; | ||||||
|  | 
 | ||||||
|  | #define CHECK_BIT(var,pos) (!!((var) & (1<<(pos)))) | ||||||
|  | 
 | ||||||
|  | void transmitMIDIonDIN(byte status, byte data1, byte data2) | ||||||
|  | { | ||||||
|  |     std::cout << "0x" << std::hex << (int)status; | ||||||
|  | 
 | ||||||
|  |     if (data1 > 0) | ||||||
|  |         std::cout << " 0x" << std::hex << (int)data1; | ||||||
|  |     if (data2 > 0) | ||||||
|  |         std::cout << " 0x" << std::hex << (int)data2; | ||||||
|  | 
 | ||||||
|  |     std::cout << std::endl; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void receive(byte* buffer, size_t length) | ||||||
|  | { | ||||||
|  |     // Pointers used to search through payload.
 | ||||||
|  |     byte lPtr = 0; | ||||||
|  |     byte rPtr = 0; | ||||||
|  | 
 | ||||||
|  |     // lastStatus used to capture runningStatus
 | ||||||
|  |     byte lastStatus; | ||||||
|  | 
 | ||||||
|  |     byte headerByte = buffer[lPtr++]; | ||||||
|  |     auto signatureIs1 = CHECK_BIT(headerByte, 7 - 1); | ||||||
|  |     auto reservedIs0 = !CHECK_BIT(headerByte, 6 - 1); | ||||||
|  |     auto timestampHigh = 0x3f & headerByte; | ||||||
|  | 
 | ||||||
|  |     byte timestampByte = buffer[lPtr++]; | ||||||
|  |     signatureIs1 = CHECK_BIT(timestampByte, 7 - 1); | ||||||
|  | 
 | ||||||
|  |     uint16_t timestamp = 0; | ||||||
|  | 
 | ||||||
|  |     bool sysExContinuation = false; | ||||||
|  | 
 | ||||||
|  |     if (signatureIs1) { | ||||||
|  |         auto timestampLow = 0x7f & timestampByte; | ||||||
|  |         timestamp = timestampLow + (timestampHigh << 7); | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |         sysExContinuation = true; | ||||||
|  |         lPtr--; // the second byte is part of the SysEx
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //While statement contains incrementing pointers and breaks when buffer size exceeded.
 | ||||||
|  |     while (true) | ||||||
|  |     { | ||||||
|  |         lastStatus = buffer[lPtr]; | ||||||
|  | 
 | ||||||
|  |         if ((buffer[lPtr] < 0x80) && !sysExContinuation) | ||||||
|  |             return; // Status message not present, bail
 | ||||||
|  | 
 | ||||||
|  |         // Point to next non-data byte
 | ||||||
|  |         rPtr = lPtr; | ||||||
|  |         while ((buffer[rPtr + 1] < 0x80) && (rPtr < (length - 1))) | ||||||
|  |             rPtr++; | ||||||
|  | 
 | ||||||
|  |         // look at l and r pointers and decode by size.
 | ||||||
|  |         if (rPtr - lPtr < 1) { | ||||||
|  |             // Time code or system
 | ||||||
|  |             transmitMIDIonDIN(lastStatus, 0, 0); | ||||||
|  |         } | ||||||
|  |         else if (rPtr - lPtr < 2) { | ||||||
|  |             transmitMIDIonDIN(lastStatus, buffer[lPtr + 1], 0); | ||||||
|  |         } | ||||||
|  |         else if (rPtr - lPtr < 3) { | ||||||
|  |             transmitMIDIonDIN(lastStatus, buffer[lPtr + 1], buffer[lPtr + 2]); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             // Too much data
 | ||||||
|  |             // If not System Common or System Real-Time, send it as running status
 | ||||||
|  | 
 | ||||||
|  |             auto midiType = buffer[lPtr] & 0xF0; | ||||||
|  |             if (sysExContinuation) | ||||||
|  |                 midiType = 0xF0; | ||||||
|  | 
 | ||||||
|  |             switch (midiType) | ||||||
|  |             { | ||||||
|  |             case 0x80: | ||||||
|  |             case 0x90: | ||||||
|  |             case 0xA0: | ||||||
|  |             case 0xB0: | ||||||
|  |             case 0xE0: | ||||||
|  |                 for (auto i = lPtr; i < rPtr; i = i + 2) | ||||||
|  |                 { | ||||||
|  |                     transmitMIDIonDIN(lastStatus, buffer[i + 1], buffer[i + 2]); | ||||||
|  |                 } | ||||||
|  |                 break; | ||||||
|  |             case 0xC0: | ||||||
|  |             case 0xD0: | ||||||
|  |                 for (auto i = lPtr; i < rPtr; i = i + 1) | ||||||
|  |                 { | ||||||
|  |                     transmitMIDIonDIN(lastStatus, buffer[i + 1], 0); | ||||||
|  |                 } | ||||||
|  |                 break; | ||||||
|  |             case 0xF0: | ||||||
|  | 
 | ||||||
|  |                 // do we have a complete sysex?
 | ||||||
|  |                 if ((rPtr + 1 < length) && (buffer[rPtr + 1] == 0xF7)) | ||||||
|  |                 { | ||||||
|  |                     std::cout << "end: 0x" << std::hex << (int)buffer[rPtr + 1] << std::endl; | ||||||
|  |                     rPtr--; | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 transmitMIDIonDIN(buffer[lPtr], 0, 0); | ||||||
|  |                 for (auto i = lPtr; i < rPtr; i++) | ||||||
|  |                     transmitMIDIonDIN(buffer[i + 1], 0, 0); | ||||||
|  | 
 | ||||||
|  |                 rPtr++; | ||||||
|  |                 if (rPtr >= length) | ||||||
|  |                     return; // end of packet
 | ||||||
|  | 
 | ||||||
|  |                 timestampByte = buffer[rPtr++]; | ||||||
|  |                 signatureIs1 = CHECK_BIT(timestampByte, 7 - 1); | ||||||
|  |                 if (signatureIs1) | ||||||
|  |                 { | ||||||
|  |                     auto timestampLow = 0x7f & timestampByte; | ||||||
|  |                     timestamp = timestampLow + (timestampHigh << 7); | ||||||
|  | 
 | ||||||
|  |                     std::cout << "timestamp low: 0x" << std::hex << (int)timestampByte << std::endl; | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 std::cout << "end of SysEx: 0x" << std::hex << (int)buffer[rPtr] << std::endl; | ||||||
|  | 
 | ||||||
|  |                 break; | ||||||
|  | 
 | ||||||
|  |             default: | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         rPtr++; | ||||||
|  |         if (rPtr >= length) | ||||||
|  |             return; // end of packet
 | ||||||
|  | 
 | ||||||
|  |         timestampByte = buffer[rPtr++]; | ||||||
|  | 
 | ||||||
|  |       //  std::cout << "dddd: 0x" << std::hex << (int)timestampByte << std::endl;
 | ||||||
|  | 
 | ||||||
|  |         signatureIs1 = CHECK_BIT(timestampByte, 7 - 1); | ||||||
|  |         if (signatureIs1) | ||||||
|  |         { | ||||||
|  |             auto timestampLow = 0x7f & timestampByte; | ||||||
|  |             timestamp = timestampLow + (timestampHigh << 7); | ||||||
|  | 
 | ||||||
|  |             std::cout << "timestamp low is 0x" << std::hex << (int)timestampByte << std::endl; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Point to next status
 | ||||||
|  |         lPtr = rPtr; | ||||||
|  |         if (lPtr >= length) | ||||||
|  |             return; //end of packet
 | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | int main() | ||||||
|  | { | ||||||
|  |     byte packet1[] = {0x80, 0xF7, 0x80, 0x34, 0x2B, 0xF7, 0x81, 0x34, 0x2B, 0xF8, 0xF0, 0x00, 0x11}; | ||||||
|  |     receive(packet1, sizeof(packet1)); | ||||||
|  | 
 | ||||||
|  |     byte packet2[] = { 0x91, 0x22, 0x33, 0x44, 0x55, 0xF7, 0xF7, 0x80, 0x34, 0x2B, 0xF7, 0x80, 0x34, 0x34 }; | ||||||
|  |     receive(packet2, sizeof(packet2)); | ||||||
|  |      | ||||||
|  |     | ||||||
|  |     std::cout << std::endl << "SysEx part 1" << std::endl; | ||||||
|  | 
 | ||||||
|  |     byte sysExPart1[] = { 0xB0, 0xF4,  | ||||||
|  |                           0xF0,  | ||||||
|  |                           0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; | ||||||
|  |     receive(sysExPart1, sizeof(sysExPart1)); | ||||||
|  | 
 | ||||||
|  |     std::cout << std::endl << "SysEx part 2" << std::endl; | ||||||
|  | 
 | ||||||
|  |     byte sysExPart2[] = { 0xB0,  | ||||||
|  |                           0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,  | ||||||
|  |                           0xF4, | ||||||
|  |                           0xF7 }; | ||||||
|  |     receive(sysExPart2, sizeof(sysExPart2)); | ||||||
|  |      | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     std::cout << "ble Packet with 1 MIDI messages" << std::endl; | ||||||
|  | 
 | ||||||
|  |     byte blePacketWithOneMIDIMessage[] = { 0xA8, 0xC0,  | ||||||
|  |                                            0x90, 0x3E, 0x3E }; | ||||||
|  |     receive(blePacketWithOneMIDIMessage, sizeof(blePacketWithOneMIDIMessage)); | ||||||
|  |      | ||||||
|  |     std::cout << std::endl << "ble Packet with 2 MIDI messages" << std::endl; | ||||||
|  | 
 | ||||||
|  |     byte blePacketWithTwoMIDIMessage[] = { 0xA8, 0xC0,  | ||||||
|  |                                            0x90, 0x3E, 0x3E,  | ||||||
|  |                                            0xC1,  | ||||||
|  |                                            0x91, 0x3E, 0x3E }; | ||||||
|  |     receive(blePacketWithTwoMIDIMessage, sizeof(blePacketWithTwoMIDIMessage)); | ||||||
|  | 
 | ||||||
|  | //    std::cout << std::endl << "2 MIDI messages with running status" << std::endl;
 | ||||||
|  | 
 | ||||||
|  | // TODO
 | ||||||
|  |      | ||||||
|  | //    byte twoMIDIMessageWithRunningStatus[] = { 0xA9, 0xAE, 0xD1, 0x74, 0xAF, 0xD2, 0x74, 0xB1 };
 | ||||||
|  | //    receive(twoMIDIMessageWithRunningStatus, sizeof(twoMIDIMessageWithRunningStatus));
 | ||||||
|  | 
 | ||||||
|  | //    std::cout << std::endl << "2 MIDI messages with running status" << std::endl;
 | ||||||
|  | //
 | ||||||
|  | //    byte multipleMIDIMessagesMixedType[] = { 0x00 };
 | ||||||
|  | //    receive(multipleMIDIMessagesMixedType, sizeof(multipleMIDIMessagesMixedType));
 | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,31 @@ | ||||||
|  |  | ||||||
|  | Microsoft Visual Studio Solution File, Format Version 12.00 | ||||||
|  | # Visual Studio Version 16 | ||||||
|  | VisualStudioVersion = 16.0.30204.135 | ||||||
|  | MinimumVisualStudioVersion = 10.0.40219.1 | ||||||
|  | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleApplication2", "ConsoleApplication2.vcxproj", "{7E36A54F-8E5A-45A0-B83A-02B04886D31F}" | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
|  | 		Debug|x64 = Debug|x64 | ||||||
|  | 		Debug|x86 = Debug|x86 | ||||||
|  | 		Release|x64 = Release|x64 | ||||||
|  | 		Release|x86 = Release|x86 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||||
|  | 		{7E36A54F-8E5A-45A0-B83A-02B04886D31F}.Debug|x64.ActiveCfg = Debug|x64 | ||||||
|  | 		{7E36A54F-8E5A-45A0-B83A-02B04886D31F}.Debug|x64.Build.0 = Debug|x64 | ||||||
|  | 		{7E36A54F-8E5A-45A0-B83A-02B04886D31F}.Debug|x86.ActiveCfg = Debug|Win32 | ||||||
|  | 		{7E36A54F-8E5A-45A0-B83A-02B04886D31F}.Debug|x86.Build.0 = Debug|Win32 | ||||||
|  | 		{7E36A54F-8E5A-45A0-B83A-02B04886D31F}.Release|x64.ActiveCfg = Release|x64 | ||||||
|  | 		{7E36A54F-8E5A-45A0-B83A-02B04886D31F}.Release|x64.Build.0 = Release|x64 | ||||||
|  | 		{7E36A54F-8E5A-45A0-B83A-02B04886D31F}.Release|x86.ActiveCfg = Release|Win32 | ||||||
|  | 		{7E36A54F-8E5A-45A0-B83A-02B04886D31F}.Release|x86.Build.0 = Release|Win32 | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(SolutionProperties) = preSolution | ||||||
|  | 		HideSolutionNode = FALSE | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ExtensibilityGlobals) = postSolution | ||||||
|  | 		SolutionGuid = {A1E2E895-A8EE-472B-95CE-31896A15FE81} | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
|  | @ -0,0 +1,147 @@ | ||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||||
|  |   <ItemGroup Label="ProjectConfigurations"> | ||||||
|  |     <ProjectConfiguration Include="Debug|Win32"> | ||||||
|  |       <Configuration>Debug</Configuration> | ||||||
|  |       <Platform>Win32</Platform> | ||||||
|  |     </ProjectConfiguration> | ||||||
|  |     <ProjectConfiguration Include="Release|Win32"> | ||||||
|  |       <Configuration>Release</Configuration> | ||||||
|  |       <Platform>Win32</Platform> | ||||||
|  |     </ProjectConfiguration> | ||||||
|  |     <ProjectConfiguration Include="Debug|x64"> | ||||||
|  |       <Configuration>Debug</Configuration> | ||||||
|  |       <Platform>x64</Platform> | ||||||
|  |     </ProjectConfiguration> | ||||||
|  |     <ProjectConfiguration Include="Release|x64"> | ||||||
|  |       <Configuration>Release</Configuration> | ||||||
|  |       <Platform>x64</Platform> | ||||||
|  |     </ProjectConfiguration> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <PropertyGroup Label="Globals"> | ||||||
|  |     <VCProjectVersion>16.0</VCProjectVersion> | ||||||
|  |     <Keyword>Win32Proj</Keyword> | ||||||
|  |     <ProjectGuid>{7e36a54f-8e5a-45a0-b83a-02b04886d31f}</ProjectGuid> | ||||||
|  |     <RootNamespace>ConsoleApplication2</RootNamespace> | ||||||
|  |     <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | ||||||
|  |     <ConfigurationType>Application</ConfigurationType> | ||||||
|  |     <UseDebugLibraries>true</UseDebugLibraries> | ||||||
|  |     <PlatformToolset>v142</PlatformToolset> | ||||||
|  |     <CharacterSet>Unicode</CharacterSet> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||||
|  |     <ConfigurationType>Application</ConfigurationType> | ||||||
|  |     <UseDebugLibraries>false</UseDebugLibraries> | ||||||
|  |     <PlatformToolset>v142</PlatformToolset> | ||||||
|  |     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||||
|  |     <CharacterSet>Unicode</CharacterSet> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||||
|  |     <ConfigurationType>Application</ConfigurationType> | ||||||
|  |     <UseDebugLibraries>true</UseDebugLibraries> | ||||||
|  |     <PlatformToolset>v142</PlatformToolset> | ||||||
|  |     <CharacterSet>Unicode</CharacterSet> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||||
|  |     <ConfigurationType>Application</ConfigurationType> | ||||||
|  |     <UseDebugLibraries>false</UseDebugLibraries> | ||||||
|  |     <PlatformToolset>v142</PlatformToolset> | ||||||
|  |     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||||
|  |     <CharacterSet>Unicode</CharacterSet> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||||
|  |   <ImportGroup Label="ExtensionSettings"> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="Shared"> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||||
|  |     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||||
|  |     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||||||
|  |     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||||||
|  |     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||||
|  |   </ImportGroup> | ||||||
|  |   <PropertyGroup Label="UserMacros" /> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||||
|  |     <LinkIncremental>true</LinkIncremental> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||||
|  |     <LinkIncremental>false</LinkIncremental> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||||||
|  |     <LinkIncremental>true</LinkIncremental> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||||||
|  |     <LinkIncremental>false</LinkIncremental> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||||
|  |     <ClCompile> | ||||||
|  |       <WarningLevel>Level3</WarningLevel> | ||||||
|  |       <SDLCheck>true</SDLCheck> | ||||||
|  |       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||||
|  |       <ConformanceMode>true</ConformanceMode> | ||||||
|  |     </ClCompile> | ||||||
|  |     <Link> | ||||||
|  |       <SubSystem>Console</SubSystem> | ||||||
|  |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  |     </Link> | ||||||
|  |   </ItemDefinitionGroup> | ||||||
|  |   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||||
|  |     <ClCompile> | ||||||
|  |       <WarningLevel>Level3</WarningLevel> | ||||||
|  |       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||||
|  |       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||||
|  |       <SDLCheck>true</SDLCheck> | ||||||
|  |       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||||
|  |       <ConformanceMode>true</ConformanceMode> | ||||||
|  |     </ClCompile> | ||||||
|  |     <Link> | ||||||
|  |       <SubSystem>Console</SubSystem> | ||||||
|  |       <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||||||
|  |       <OptimizeReferences>true</OptimizeReferences> | ||||||
|  |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  |     </Link> | ||||||
|  |   </ItemDefinitionGroup> | ||||||
|  |   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||||||
|  |     <ClCompile> | ||||||
|  |       <WarningLevel>Level3</WarningLevel> | ||||||
|  |       <SDLCheck>true</SDLCheck> | ||||||
|  |       <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||||
|  |       <ConformanceMode>true</ConformanceMode> | ||||||
|  |     </ClCompile> | ||||||
|  |     <Link> | ||||||
|  |       <SubSystem>Console</SubSystem> | ||||||
|  |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  |     </Link> | ||||||
|  |   </ItemDefinitionGroup> | ||||||
|  |   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||||||
|  |     <ClCompile> | ||||||
|  |       <WarningLevel>Level3</WarningLevel> | ||||||
|  |       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||||
|  |       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||||
|  |       <SDLCheck>true</SDLCheck> | ||||||
|  |       <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||||
|  |       <ConformanceMode>true</ConformanceMode> | ||||||
|  |     </ClCompile> | ||||||
|  |     <Link> | ||||||
|  |       <SubSystem>Console</SubSystem> | ||||||
|  |       <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||||||
|  |       <OptimizeReferences>true</OptimizeReferences> | ||||||
|  |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  |     </Link> | ||||||
|  |   </ItemDefinitionGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ClCompile Include="ConsoleApplication2.cpp" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||||
|  |   <ImportGroup Label="ExtensionTargets"> | ||||||
|  |   </ImportGroup> | ||||||
|  | </Project> | ||||||
		Loading…
	
		Reference in New Issue
	
	 lathoub
						lathoub