Developer(s) | Microsoft |
---|---|
Initial release | February 1993 [1] |
Stable release | 14.40.33617 |
Written in | C++ [2] |
Operating system | Windows |
Platform | IA-32, x86-64 and ARM |
Available in | English, Chinese (Simplified & Traditional), Czech, French, German, Italian, Japanese, Korean, Polish, Portuguese (Brazilian), Russian, Spanish, Turkish |
Type | Compiler |
License | Trialware and freeware |
Website | docs |
Microsoft Visual C++ (MSVC) is a compiler for the C, C++, C++/CLI and C++/CX programming languages by Microsoft. MSVC is proprietary software; it was originally a standalone product but later became a part of Visual Studio and made available in both trialware and freeware forms. It features tools for developing and debugging C++ code, especially code written for the Windows API, DirectX and .NET.
Many applications require redistributable Visual C++ runtime library packages to function correctly. These packages are frequently installed separately from the applications they support, enabling multiple applications to use the package with only a single installation. These Visual C++ redistributable and runtime packages are mostly installed for standard libraries that many applications use. [3]
The predecessor to Visual C++ was called Microsoft C/C++. There was also a Microsoft QuickC 2.5 and a Microsoft QuickC for Windows 1.0. The Visual C++ compiler is still known as Microsoft C/C++ and as of the release of Visual C++ 2015 Update 2, is on version 14.0.23918.0.[ citation needed ]
There are several different version numbers to consider when working with Visual C or C++. The oldest and most original of these is the compiler version number, which has been monotonically increased since the early Microsoft C compiler days. This is the version returned by running the command cl.exe
on its own without any options. By taking two digits after the decimal and dropping the decimal point, this also becomes the value of the C pre-processor macro: _MSC_VER
, and the CMake variable: MSVC_VERSION
. A longer version of the C macro is _MSC_FULL_VER
to make more finely-grained distinctions between builds of the compiler. An example of _MSC_VER
is "1933" to represent version 19.33 of the Microsoft C/C++ compiler, and of _MSC_FULL_VER
is "193331630". You should use the >=
operator to test the value of _MSC_VER
or _MSC_FULL_VER
instead of equality.
The Visual product version, such as "17.3.4", designates the version of Visual Studio with which version 19.33 of the compiler was packaged. Then there is the Microsoft Visual C/C++ Runtime Library version, e.g. "14.3". From this, one can deduce also the toolset version, which can be obtained by taking the first three digits of the runtime library version and dropping the decimal, e.g. "143". It includes the Visual C/C++ runtime library, as well as compilers, linkers, assemblers, other build tools, and matching libraries and header files. The following is a (scrapeable) table of the known correlated version numbers.
product name | VC ( Version Code ) | marketing year | _MSC_VER | _MSC_FULL_VER | runtime library version |
---|---|---|---|---|---|
Microsoft C 6.0 | 600 | ||||
Microsoft C/C++ 7.0 | 700 | ||||
Visual C++ 1.0 | 1.0 | 800 | 1 | ||
Visual C++ 2.0 | 2.0 | 900 | 2 | ||
Visual C++ 4.0 | 4.0 | 1000 | 4 | ||
Visual C++ 4.1 | 4.1 | 1010 | 4.1 | ||
Visual C++ 4.2 | 4.2 | 1020 | 4.2 | ||
Visual Studio 97 [5.0] | 5.0 | 97 | 1100 | 5 | |
Visual Studio 6.0 SP5 | 6.0 | 1200 | 12008804 | 6 | |
Visual Studio 6.0 SP6 | 6.0 | 1200 | 12008804 | 6 | |
Visual Studio .NET 2002 [7.0] | 7.0 | 2002 | 1300 | 13009466 | 7 |
Visual Studio .NET 2003 Beta [7.1] | 7.1 | 2003 | 1310 | 13102292 | 7.1 |
Visual Studio Toolkit 2003 [7.1] | 7.1 | 2003 | 1310 | 13103052 | 7.1 |
Visual Studio .NET 2003 [7.1] | 7.1 | 2003 | 1310 | 13103077 | 7.1 |
Visual Studio .NET 2003 SP1 [7.1] | 7.1 | 2003 | 1310 | 13106030 | 7.1 |
Visual Studio 2005 Beta 1 [8.0] | 8.0 | 2005 | 1400 | 140040607 | 8 |
Visual Studio 2005 Beta 2 [8.0] | 8.0 | 2005 | 1400 | 140050215 | 8 |
Visual Studio 2005 [8.0] | 8.0 | 2005 | 1400 | 140050320 | 8 |
Visual Studio 2005 SP1 [8.0] | 8.0 | 2005 | 1400 | 140050727 | 8 |
Visual Studio 2008 Beta 2 [9.0] | 8.0 | 2008 | 1500 | 150020706 | 9 |
Visual Studio 2008 [9.0] | 9.0 | 2010 | 1500 | 150021022 | 9 |
Visual Studio 2008 SP1 [9.0] | 9.0 | 2010 | 1500 | 150030729 | 9 |
Visual Studio 2010 Beta 1 [10.0] | 10.0 | 2010 | 1600 | 160020506 | 10 |
Visual Studio 2010 Beta 2 [10.0] | 10.0 | 2010 | 1600 | 160021003 | 10 |
Visual Studio 2010 [10.0] | 10.0 | 2010 | 1600 | 160030319 | 10 |
Visual Studio 2010 SP1 [10.0] | 10.0 | 2010 | 1600 | 160040219 | 10 |
Visual Studio 2012 [11.0] | 11.0 | 2012 | 1700 | 170050727 | 11 |
Visual Studio 2012 Update 1 [11.0] | 11.0 | 2012 | 1700 | 170051106 | 11 |
Visual Studio 2012 Update 2 [11.0] | 11.0 | 2012 | 1700 | 170060315 | 11 |
Visual Studio 2012 Update 3 [11.0] | 11.0 | 2012 | 1700 | 170060610 | 11 |
Visual Studio 2012 Update 4 [11.0] | 11.0 | 2012 | 1700 | 170061030 | 11 |
Visual Studio 2012 November CTP [11.0] | 11.0 | 2012 | 1700 | 170051025 | 11 |
Visual Studio 2013 Preview [12.0] | 12.0 | 2013 | 1800 | 180020617 | 12 |
Visual Studio 2013 RC [12.0] | 12.0 | 2013 | 1800 | 180020827 | 12 |
Visual Studio 2013 [12.0] | 12.0 | 2013 | 1800 | 180021005 | 12 |
Visual Studio 2013 Update 1 [12.0] | 12.0 | 2013 | 1800 | 180021005 | 12 |
Visual Studio 2013 Update2 RC [12.0] | 12.0 | 2013 | 1800 | 180030324 | 12 |
Visual Studio 2013 Update 2 [12.0] | 12.0 | 2013 | 1800 | 180030501 | 12 |
Visual Studio 2013 Update 3 [12.0] | 12.0 | 2013 | 1800 | 180030723 | 12 |
Visual Studio 2013 Update 4 [12.0] | 12.0 | 2013 | 1800 | 180031101 | 12 |
Visual Studio 2013 Update 5 [12.0] | 12.0 | 2013 | 1800 | 180040629 | 12 |
Visual Studio 2013 November CTP [12.0] | 12.0 | 2013 | 1800 | 180021114 | 12 |
Visual Studio 2015 [14.0] | 14.0 | 2015 | 1900 | 190023026 | 14 |
Visual Studio 2015 Update 1 [14.0] | 14.0 | 2015 | 1900 | 190023506 | 14 |
Visual Studio 2015 Update 2 [14.0] | 14.0 | 2015 | 1900 | 190023918 | 14 |
Visual Studio 2015 Update 3 [14.0] | 14.0 | 2015 | 1900 | 190024210 | 14 |
Visual Studio 2017 version 15.0 | 15.0 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 version 15.1 | 15.1 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 version 15.2 | 15.2 | 2017 | 1910 | 191025017 | 14.1 |
Visual Studio 2017 version 15.3.3 | 15.3.3 | 2017 | 1911 | 191125507 | 14.11 |
Visual Studio 2017 version 15.4.4 | 15.4.4 | 2017 | 1911 | 191125542 | 14.11 |
Visual Studio 2017 version 15.4.5 | 15.4.5 | 2017 | 1911 | 191125547 | 14.11 |
Visual Studio 2017 version 15.5.2 | 15.5.2 | 2017 | 1912 | 191225831 | 14.12 |
Visual Studio 2017 version 15.5.3 | 15.5.3 | 2017 | 1912 | 191225834 | 14.12 |
Visual Studio 2017 version 15.5.4 | 15.5.4 | 2017 | 1912 | 191225834 | 14.12 |
Visual Studio 2017 version 15.5.6 | 15.5.6 | 2017 | 1912 | 191225835 | 14.12 |
Visual Studio 2017 version 15.5.7 | 15.5.7 | 2017 | 1912 | 191225835 | 14.12 |
Visual Studio 2017 version 15.6.0 | 15.6.0 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 version 15.6.1 | 15.6.1 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 version 15.6.2 | 15.6.2 | 2017 | 1913 | 191326128 | 14.13 |
Visual Studio 2017 version 15.6.3 | 15.6.3 | 2017 | 1913 | 191326129 | 14.13 |
Visual Studio 2017 version 15.6.4 | 15.6.4 | 2017 | 1913 | 191326129 | 14.13 |
Visual Studio 2017 version 15.6.6 | 15.6.6 | 2017 | 1913 | 191326131 | 14.13 |
Visual Studio 2017 version 15.6.7 | 15.6.7 | 2017 | 1913 | 191326132 | 14.13 |
Visual Studio 2017 version 15.7.1 | 15.7.1 | 2017 | 1914 | 191426428 | 14.14 |
Visual Studio 2017 version 15.7.2 | 15.7.2 | 2017 | 1914 | 191426429 | 14.14 |
Visual Studio 2017 version 15.7.3 | 15.7.3 | 2017 | 1914 | 191426430 | 14.14 |
Visual Studio 2017 version 15.7.5 | 15.7.5 | 2017 | 1914 | 191426433 | 14.14 |
Visual Studio 2017 version 15.9.1 | 15.9.1 | 2017 | 1916 | 191627023 | 14.16 |
Visual Studio 2017 version 15.9.4 | 15.9.4 | 2017 | 1916 | 191627025 | 14.16 |
Visual Studio 2017 version 15.9.5 | 15.9.5 | 2017 | 1916 | 191627026 | 14.16 |
Visual Studio 2017 version 15.9.7 | 15.9.7 | 2017 | 1916 | 191627027 | 14.16 |
Visual Studio 2017 version 15.9.11 | 15.9.11 | 2017 | 1916 | 191627030 | 14.16 |
Visual Studio 2019 version 16.0.0 | 16.0.0 | 2019 | 1920 | 192027508 | 14.20 |
Visual Studio 2019 version 16.1.2 | 16.1.2 | 2019 | 1921 | 192127702 | 14.21 |
Visual Studio 2019 version 16.2.3 | 16.2.3 | 2019 | 1922 | 192227905 | 14.21 |
Visual Studio 2019 version 16.3.2 | 16.3.2 | 2019 | 1923 | 192328105 | 14.21 |
Visual Studio 2019 version 16.4.0 | 16.4.0 | 2019 | 1924 | 192428314 | 14.24 |
Visual Studio 2019 version 16.5.1 | 16.5.1 | 2019 | 1925 | 192528611 | 14.25 |
Visual Studio 2019 version 16.6.2 | 16.6.2 | 2019 | 1926 | 192628806 | 14.26 |
Visual Studio 2019 version 16.7 | 16.7 | 2019 | 1927 | 192729112 | 14.27 |
Visual Studio 2019 version 16.8.1 | 16.8.1 | 2019 | 1928 | 192829333 | 14.28 |
Visual Studio 2019 version 16.8.2 | 16.8.2 | 2019 | 1928 | 192829334 | 14.28 |
Visual Studio 2019 version 16.9.0 | 16.9.0 | 2019 | 1928 | 192829910 | 14.28 |
Visual Studio 2019 version 16.9.2 | 16.9.2 | 2019 | 1928 | 192829913 | 14.28 |
Visual Studio 2019 version 16.9.17 | 16.9.17 | 2019 | 1928 | 192829921 | 14.28 |
Visual Studio 2019 version 16.9.18 | 16.9.18 | 2019 | 1928 | 192829921 | 14.28 |
Visual Studio 2019 version 16.9.19 | 16.9.19 | 2019 | 1928 | 192829923 | 14.28 |
Visual Studio 2019 version 16.11.2 | 16.11.2 | 2019 | 1929 | 192930133 | 14.29 |
Visual Studio 2019 version 16.11.8 | 16.11.8 | 2019 | 1929 | 192930138 | 14.29 |
Visual Studio 2019 version 16.11.9 | 16.11.9 | 2019 | 1929 | 192930139 | 14.29 |
Visual Studio 2019 version 16.11.10 | 16.11.10 | 2019 | 1929 | 192930140 | 14.29 |
Visual Studio 2019 version 16.11.11 | 16.11.11 | 2019 | 1929 | 192930141 | 14.29 |
Visual Studio 2019 version 16.11.12 | 16.11.12 | 2019 | 1929 | 192930142 | 14.29 |
Visual Studio 2019 version 16.11.16 | 16.11.16 | 2019 | 1929 | 192930145 | 14.29 |
Visual Studio 2019 version 16.11.24 | 16.11.24 | 2019 | 1929 | 192930148 | 14.29 |
Visual Studio 2019 version 16.11.27 | 16.11.27 | 2019 | 1929 | 192930151 | 14.29 |
Visual Studio 2019 version 16.11.35 | 16.11.35 | 2019 | 1929 | 192930154 | 14.29 |
Visual Studio 2022 version 17.0.1 | 17.0.1 | 2022 | 1930 | 193030705 | 14.30 |
Visual Studio 2022 version 17.0.2 | 17.0.2 | 2022 | 1930 | 193030706 | 14.31 |
Visual Studio 2022 version 17.1.3 | 17.1.3 | 2022 | 1931 | 193131105 | 14.31 |
Visual Studio 2022 version 17.2.2 | 17.2.2 | 2022 | 1932 | 193231329 | 14.32 |
Visual Studio 2022 version 17.3.4 | 17.3.4 | 2022 | 1933 | 193331630 | 14.33 |
Visual Studio 2022 version 17.4.0 | 17.4.0 | 2022 | 1934 | 193431933 | 14.34 |
Visual Studio 2022 version 17.5.0 | 17.5.0 | 2022 | 1935 | 193532215 | 14.35 |
Visual Studio 2022 version 17.6.0 | 17.6.0 | 2022 | 1936 | 193632532 | 14.36 |
Visual Studio 2022 version 17.6.2 | 17.6.2 | 2022 | 1936 | 193632532 | 14.36.32532 |
Visual Studio 2022 version 17.6.4 | 17.6.4 | 2022 | 1936 | 193632535 | 14.36.32532 |
Visual Studio 2022 version 17.7.0 | 17.7.0 | 2022 | 1937 | 193732822 | 14.36.32543 |
Visual Studio 2022 version 17.8.0 | 17.8.0 | 2022 | 1938 | 193833130 | 14.38.33135 |
Visual Studio 2022 version 17.9.1 | 17.9.1 | 2022 | 1939 | 193933520 | 14.39.33520 |
Visual Studio 2022 version 17.9.6 | 17.9.6 | 2022 | 1939 | 193933523 | 14.39.33523 |
The Visual C++ compiler ABI have historically changed between major compiler releases. [54] This is especially the case for STL containers, where container sizes have varied a lot between compiler releases. [55] Microsoft therefore recommends against using C++ interfaces at module boundaries when one wants to enable client code compiled using a different compiler version. Instead of C++, Microsoft recommends using C [56] or COM [57] interfaces, which are designed to have a stable ABI between compiler releases.
All 14.x MSVC releases have a stable ABI, [58] and binaries built with these versions can be mixed in a forwards-compatible manner, noting the following restrictions:
Visual C++ ships with different versions of C runtime libraries. [59] This means users can compile their code with any of the available libraries. However, this can cause some problems when using different components (DLLs, EXEs) in the same program. A typical example is a program using different libraries. The user should use the same C Run-Time for all the program's components unless the implications are understood. Microsoft recommends using the multithreaded, dynamic link library (/MD or /MDd compiler option) to avoid possible problems. [59]
Although Microsoft's CRT implements a large subset of POSIX interfaces, the Visual C++ compiler will emit a warning on every use of such functions by default. The rationale is that C and C++ standards require an underscore prefix before implementation-defined interfaces, so the use of these functions are non-standard. [60] However, systems that are actually POSIX-compliant would not accept these underscored names, and it is more portable to just turn off the warning instead.
Although the product originated as an IDE for the C programming language, for many years the compiler's support for that language conformed only to the original edition of the C standard, dating from 1989, but not the C99 revision of the standard. There had been no plans to support C99 even in 2011, more than a decade after its publication. [61]
Visual C++ 2013 finally added support for various C99 features in its C mode (including designated initializers, compound literals, and the _Bool
type), [62] though it was still not complete. [63] Visual C++ 2015 further improved the C99 support, with full support of the C99 Standard Library, except for features that require C99 language features not yet supported by the compiler. [64]
Most of the changes from the C11 revision of the standard were still not supported by Visual C++ 2017. [65] For example, generic selections via the _Generic
keyword are not supported by the compiler and result in a syntax error. [66]
The preprocessor was overhauled in 2018, with C11 in sight: [67]
Full C11 conformance is on our roadmap, and updating the preprocessor is just the first step in that process. The C11
_Generic
feature is not actually part of the preprocessor, so it has not yet been implemented. When implemented I expect the feature to work independently of if the traditional or updated preprocessor logic is used.
_Generic
support has been committed to MSVC as of February 2020. [68]
In September 2020, Microsoft announced C11 and C17 standards support in MSVC would arrive in version 16.8. [69] This did not include optional features but Microsoft indicated that they were planning to add support for atomics and threads at a later date. In version 17.5, partial (since atomic locks are missing) and experimental (meaning hidden behind the compiler flag /experimental:c11atomics
) support for atomics was added [70] and in version 17.8, support for threads was added, this time not behind a compiler flag. [71] [72]
With default settings MSVC does not do two-phase name lookup which prevents it from flagging a wide range of invalid code. Most checks are deferred to template instantiation. More recent versions remedy this behavior, but it needs to be enabled by the command-line option /permissive-
. [73]
Visual Basic (VB), originally called Visual Basic .NET (VB.NET), is a multi-paradigm, object-oriented programming language, implemented on .NET, Mono, and the .NET Framework. Microsoft launched VB.NET in 2002 as the successor to its original Visual Basic language, the last version of which was Visual Basic 6.0. Although the ".NET" portion of the name was dropped in 2005, this article uses "Visual Basic [.NET]" to refer to all Visual Basic languages released since 2002, in order to distinguish between them and the classic Visual Basic. Along with C# and F#, it is one of the three main languages targeting the .NET ecosystem. Microsoft updated its VB language strategy on 6 February 2023, stating that VB is a stable language now and Microsoft will keep maintaining it.
C++Builder is a rapid application development (RAD) environment for developing software in the C++ programming language. Originally developed by Borland, as of 2009 it is owned by Embarcadero Technologies, a subsidiary of Idera. C++Builder can compile apps for Windows, iOS, macOS, and Android. It includes tools that allow drag-and-drop visual development, making programming easier by incorporating a WYSIWYG graphical user interface builder.
Microsoft Foundation Class Library (MFC) is a C++ object-oriented library for developing desktop applications for Windows.
C99 is an informal name for ISO/IEC 9899:1999, a past version of the C programming language standard. It extends the previous version (C90) with new features for the language and the standard library, and helps implementations make better use of available computer hardware, such as IEEE 754-1985 floating-point arithmetic, and compiler technology. The C11 version of the C programming language standard, published in 2011, updates C99.
Microsoft Visual Studio Express was a set of integrated development environments (IDEs) that Microsoft developed and released free of charge. They are function-limited version of the non-free Visual Studio and require mandatory registration. Express editions started with Visual Studio 2005.
Interix was an optional, POSIX-conformant Unix subsystem for Windows NT operating systems. Interix was a component of Windows Services for UNIX, and a superset of the Microsoft POSIX subsystem. Like the POSIX subsystem, Interix was an environment subsystem for the NT kernel. It included numerous open source utility software programs and libraries. Interix was originally developed and sold as OpenNT until purchased by Microsoft in 1999.
Windows Services for UNIX (SFU) is a discontinued software package produced by Microsoft which provided a Unix environment on Windows NT and some of its immediate successor operating-systems.
Windows Template Library (WTL) is a free software, object-oriented C++ template library for Win32 development. WTL was created by Microsoft employee Nenad Stefanovic for internal use and later released as an unsupported add-on to Visual Studio and the Win32 Framework SDK. It was developed primarily as a light-weight alternative to the Microsoft Foundation Classes and builds upon Microsoft's ATL, another lightweight API widely used to create COM and ActiveX libraries.
Microsoft Windows SDK, and its predecessors Platform SDK, and .NET Framework SDK, are software development kits (SDKs) from Microsoft that contain documentation, header files, libraries, samples and tools required to develop applications for Microsoft Windows and .NET Framework. Platform SDK specializes in developing applications for Windows 2000, XP and Windows Server 2003. .NET Framework SDK is dedicated to developing applications for .NET Framework 1.1 and .NET Framework 2.0. Windows SDK is the successor of the two and supports developing applications for Windows XP and later, as well as .NET Framework 3.0 and later.
Borland C++ was a C and C++ IDE released by Borland for MS-DOS and Microsoft Windows. It was the successor to Turbo C++ and included a better debugger, the Turbo Debugger, which was written in protected mode DOS.
The Microsoft Windows operating system supports a form of shared libraries known as "dynamic-link libraries", which are code libraries that can be used by multiple processes while only one copy is loaded into memory. This article provides an overview of the core libraries that are included with every modern Windows installation, on top of which most Windows applications are built.
Visual Basic (VB) before .NET, sometimes referred to as Classic Visual Basic, is a third-generation programming language, based on BASIC, and an integrated development environment (IDE), from Microsoft for Windows known for supporting rapid application development (RAD) of graphical user interface (GUI) applications, event-driven programming and both consumption and development of components via the Component Object Model (COM) technology.
Adobe AIR is a cross-platform runtime system currently developed by Harman International, in collaboration with Adobe Inc., for building desktop applications and mobile applications, programmed using Adobe Animate, ActionScript, and optionally Apache Flex. It was originally released in 2008. The runtime supports installable applications on Windows, macOS, and mobile operating systems, including Android, iOS, and BlackBerry Tablet OS.
Visual Studio is an integrated development environment (IDE) developed by Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms including Windows API, Windows Forms, Windows Presentation Foundation (WPF), Windows Store and Microsoft Silverlight. It can produce both native code and managed code.
The .NET Framework is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until being superseded by the cross-platform .NET project. It includes a large class library called Framework Class Library (FCL) and provides language interoperability across several programming languages. Programs written for .NET Framework execute in a software environment named the Common Language Runtime (CLR). The CLR is an application virtual machine that provides services such as security, memory management, and exception handling. As such, computer code written using .NET Framework is called "managed code". FCL and CLR together constitute the .NET Framework.
RemObjects Software is an American software company founded in 2002 by Alessandro Federici and Marc Hoffman. It develops and offers tools and libraries for software developers on a variety of development platforms, including Embarcadero Delphi, Microsoft .NET, Mono, and Apple's Xcode.
Microsoft started development on the .NET Framework in the late 1990s originally under the name of Next Generation Windows Services (NGWS). By late 2001 the first beta versions of .NET Framework 1.0 were released. The first version of .NET Framework was released on 13 February 2002, bringing managed code to Windows NT 4.0, 98, 2000, ME and XP.
Mono is a free and open-source .NET Framework-compatible software framework. Originally by Ximian, it was later acquired by Novell, and is now being led by Xamarin, a subsidiary of Microsoft and the .NET Foundation. Mono can be run on many software systems.
The .NET platform is a free and open-source, managed computer software framework for Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft employees by way of the .NET Foundation and is released under an MIT License.
C++/WinRT is a C++ library for Microsoft's Windows Runtime platform, designed to provide access to modern Windows APIs. C++/WinRT is provided as a standard C++17 header file library, unlike C++/CX, which is an extension to C++ and requires a recent version of Microsoft Visual C++.
This alone is not a dispositive link, as Visual C++ 6.0, released in 1998, still has proponents mostly because it does not require the installation of Microsoft's .NET framework in order to run, as later versions of Visual C++ do.