Visual C++ Binary Compatibility

Amit Kumar Parida
1 min readNov 7, 2022

Suppose your application developed using VS 2022 LTSC 17.0 was released to your customers earlier. Now you want to move to VS 17.2 LTSC and rebuild your binaries. You want to release a patch for your application. Only the modified binaries (built with VS 17.2) will be pushed with patch to the end users’ machines. So, the end user machines will still have some binaries built with earlier VS 17.0.

VS 17.0 had different MSVC version (14.30.30704.0) and 17.2 have different MSVC version (14.32.31326).

The concern is, will the binaries built with VS 17.0 and VS 17.2 work together?

As per this C++ binary compatibility 2015–2022 | Microsoft Docs, the VC++ redistributable needs to be the latest:

“The Redistributable your app uses has a similar binary-compatibility restriction. When you mix binaries built by different supported versions of the toolset, the Redistributable version must be at least as new as the latest toolset used by any app component.”

This means if you upgrade to VS 17.2 for your patch release, then the patch release must also ship VC++ redistributable version 14.32.31326.

MSVC Version 14.30.30704.0 that is already installed by the base version of your release (built with VS 17.0) is not compatible with the binaries built with VS 17.2 that you bundle with your patch release.

To summarize, mixing VS 17.0 and VS 17.2 built binaries is a supported configuration as long as the VS 17.2 VC++ redistributable is installed and used by both.

--

--