swirl
Home Software Blog Wallpapers Webtools
VC++ Runtimes
Tuesday 03, April 2018   |   Post link

At work I am part of the engineering team for an enterprise-scale information management product. The product is a Windows based solution used by large enterprises for their information management needs. It been around for a pretty long time and over the years the source code has been migrated to various versions of Visual Studio which is the primary development environment.

Older versions of software get replaced by newer version and for security purposes products are supposed to use older libraries. One of the activities we often have to repeat is finding out if which parts of our software along with other 3rd party software still uses a particular version of the Visual Studio runtime and then upgrade those component to use the newer runtime. This blog post summarises some of the information we search for every time and refer to while making these decisions.

Some useful links

First of all some useful links which tell you more about redistributing Visual Studio runtime. If you are writing Windows applications, this is something you should definitely read once.

Visual Studio versions and runtime files

Visual Studio
Version Number
Redistribuable dlls
Visual Studio 2005
80
alt80.DLL, msvcm80.dll, msvcp80.dll, msvcr80.dll, mfc80.dll, mfc80u.dll, mfcm80.dll, mfcm80u.dll
Visual Studio 2008
90
atl90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, mfc90[LANG].dll
Visual Studio 2010
100
atl100.dll, msvcp100.dll, msvcr100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, mfc100chs.dll, mfc100[LANG].dll, vcomp100.dll (OpenMP)
Visual Studio 2012
110
atl110.dll, msvcp110.dll, msvcr110.dll, vccorlib110.dll, vcamp110.dll, mfc110.dll, mfc110u.dll, mfcm110.dll, mfcm110u.dll, mfc110chs.dll, mfc110[LANG].dll, vcomp110.dll (openMP)
Visual Studio 2013
120
msvcp120.dll, msvcr120.dll, vccorlib120.dll, vcamp120.dll, mfc120u.dll, mfcm120u.dll, mfc120[LANG].dll e.g. mfc120enu.dll, vcomp120.dll (openMP)
Visual Studio 2015
140
concrt140.dll, msvcp140.dll, vccorlib140.dll, vcruntime140.dll, vcamp140.dll, mfc140u.dll, mfcm140u.dll, mfc140[LANG].dll e.g. mfc140enu.dll, vcomp140.dll
Visual Studio 2017
150
concrt140.dll, msvcp140.dll, vccorlib140.dll, vcruntime140.dll, vcamp140.dll, mfc140u.dll, mfcm140u.dll, mfc140[LANG].dll e.g. mfc140enu.dll, vcomp140.dll

Since Visual Studio 2013, ATL library is statically linked to projects and the DLLs is no longer needed. You will find all the required redistribules in their binary form at the following location: C:\Program Files (x86)\Microsoft Visual Studio <VERSION>\VC\redist. Merge modules for the redistributables are usually located at the following folder: C:\Program Files (x86)\Common Files\Merge Modules

Visual Studio 2017 seems to have changes these locations a bit. The redistributable binaries are located at:
C:\Program Files (x86)\Microsoft Visual Studio\2017\<VERSION>\VC\Redist\MSVC
E.g.:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Redist\MSVC.
You'll find both the binaries as well as the merge-modules under this folder. If you have noticed, both VS 2015 and 2017 have the same set of redistributables, read more about this here.

Scanning for references

You can use the PEInfo utility to scan through all your bianries and looks for VC runtime DLLs being referenced. This method will not work if for some reason you have code which dynamically loads these DLLs using LoadLibrary(), you'll then have to scan through your code for any such references.




Comments

Posts By Year

2024 (1)
2023 (5)
2022 (10)
2021 (5)
2020 (12)
2019 (6)
2018 (8)
2017 (11)
2016 (6)
2015 (17)
2014 (2)
2013 (4)
2012 (2)

Posts By Category

.NET (4)
.NET Core (2)
ASP.NET MVC (4)
AWS (5)
AWS API Gateway (1)
Android (1)
Apache Camel (1)
Architecture (1)
Audio (1)
Azure (2)
Book review (3)
Business (1)
C# (3)
C++ (2)
CloudHSM (1)
Containers (4)
Corporate culture (1)
Database (3)
Database migration (1)
Desktop (1)
Docker (1)
DotNet (3)
DotNet Core (2)
ElasticSearch (1)
Entity Framework (3)
Git (3)
IIS (1)
JDBC (1)
Java (9)
Kibana (1)
Kubernetes (1)
Lambda (1)
Learning (1)
Life (7)
Linux (1)
Lucene (1)
Multi-threading (1)
Music (1)
OData (1)
Office (1)
PHP (1)
Photography (1)
PowerShell (2)
Programming (28)
Rants (5)
SQL (2)
SQL Server (1)
Security (2)
Software (1)
Software Engineering (1)
Software development (2)
Solr (1)
Sql Server (2)
Storage (1)
T-SQL (1)
TDD (1)
TSQL (5)
Tablet (1)
Technology (1)
Test Driven (1)
Unit Testing (1)
Unit Tests (1)
Utilities (3)
VC++ (1)
VMWare (1)
VSCode (1)
Visual Studio (2)
Wallpapers (1)
Web API (2)
Win32 (1)
Windows (9)
XML (2)

Posts By Tags

.NET(6) API Gateway(1) ASP.NET(4) AWS(3) Adults(1) Advertising(1) Android(1) Anti-forgery(1) Asynch(1) Authentication(2) Azure(2) Backup(1) Beliefs(1) BlockingQueue(1) Book review(2) Books(1) Busy(1) C#(4) C++(3) CLR(1) CORS(1) CSRF(1) CTE(1) Callbacks(1) Camel(1) Certificates(1) Checkbox(1) CloudHSM(1) Cmdlet(1) Company culture(1) Complexity(1) Consumer(1) Consumerism(1) Containers(3) Core(2) Custom(2) DPI(1) Data-time(1) Database(4) Debugging(1) Delegates(1) Developer(2) Dockers(2) DotNetCore(3) EF 1.0(1) Earphones(1) Elastic Search(2) ElasticSearch(1) Encrypted(1) Entity framework(1) Events(1) File copy(1) File history(1) Font(1) Git(2) HierarchyID(1) Hyper-V(1) IIS(1) Installing(1) Intelli J(1) JDBC(1) JSON(1) JUnit(1) JWT(1) Java(3) JavaScript(1) Kubernetes(1) Life(1) LinkedIn(1) Linux(2) Localization(1) Log4J(1) Log4J2(1) Lucene(1) MVC(4) Management(2) Migration history(1) Mirror(1) Mobile Apps(1) Modern Life(1) Money(1) Music(1) NGINX(1) NTFS(1) NUnit(2) OData(1) OPENXML(1) Objects(1) Office(1) OpenCover(1) Organization(1) PHP(1) Paths(1) PowerShell(2) Producer(1) Programming(2) Python(2) QAAC(1) Quality(1) REDIS(2) REST(1) Runtimes(1) S3-Select(1) SD card(1) SLF4J(1) SQL(2) SQL Code-first Migration(1) SSH(2) Sattelite assemblies(1) School(1) Secrets Manager(1) Self reliance(1) Service(1) Shell(1) Solr(1) Sony VAIO(1) Spirituality(1) Spring(1) Sql Express(1) System Image(1) TDD(1) TSQL(3) Table variables(1) Tables(1) Tablet(1) Ubuntu(1) Url rewrite(1) VMWare(1) VSCode(1) Validation(2) VeraCode(1) Wallpaper(1) Wallpapers(1) Web Development(4) Windows(2) Windows 10(2) Windows 2016(2) Windows 8.1(1) Work culture(1) XML(1) Yii(1) iTunes(1) renew(1) security(1) static ip address(1)