Visual Studio 11 and handling msvcr110.dll - visual-studio

I decided to try out Visual Studio 11, concluded that I don't like it and uninstalled it promptly. It seems quite a few of my old projects now crash with the following error.
The program can't start because MSVCR110D.dll is missing from your computer. Try reinstalling the program to fix this problem.
Unfortunately my understanding of the problem ends here, the solutions I've come across seem to suggest to change the runtime library to Multi-Threaded which results in even more errors that I don't have the knowledge or patience to deal with.
In short the question would be, how can I undo the changes Visual Studio 11 made, whatever they are.

As the comment by Hans Passant says, Microsoft does not permit the debug dll to be redistributable; they are only available when Visual Studio is installed.
Even if you are able to rebuild your projects as release builds, you may get a new problem on machines when you try to run the projects, namely, missing mvcr110.dll.
In this case, and Visual Studio need not be installed, you can get the missing dll from Microsoft.
Microsoft provides downloadable installers for these redistributable dll at:
http://www.microsoft.com/en-us/download/details.aspx?id=30679
Run the appropriate installers.
VSU3\vcredist_arm.exe , VSU3\vcredist_x64.exe , VSU3\vcredist_x86.exe

You need to downgrade the "Platfrom Toolset" property for each of your projects from v110 to v100(or v90).
To change the project toolset
In Visual Studio, in Solution Explorer, open the shortcut menu for your project and then choose Properties.
In the Property Pages dialog box, open the Configuration drop-down list and then select All Configurations.
In the left pane of the dialog box, expand Configuration Properties and then select General.
In the right pane, select Platform Toolset and then select the toolset you want from the drop-down list. For example, if you want to compile with the Visual Studio 2010 toolset, select Visual Studio 2010 (v100).
Choose the OK button.

That one is a DLL from Microsoft VS 2011/2
qutoing from http://www.rhyous.com (it talks about msvcrt100.dll but it's the same principle):
"This msvcr100.dll is the Microsoft Visual C++ Redistributable dll
that is needed for projects built with Visual Studio 2010. The dll
letters spell this out. MS = Microsoft, V = Visual, C = C program
language, R = Run-time, 100 = Version "
If you create a C++ project in Visual Studio 2010, this file is probably needed.
you need to install the MS redistributable, but seems it's not yet available
see this thread - http://social.msdn.microsoft.com/Forums/en-US/parallelcppnative/thread/8963c3d9-26ec-4748-af95-7c696a27c431
I would guess that your compiler is still the VS2011 one, that's why your program depends on vs2011 DLLs..

Just hat the same problem after updating my Visual Studio. The problem is that the new project is using the v110 plattform and the old one was using the v110 platform. That means I required now the Microsoft Visual C++ 2012 Redistributable as mentioned here:
http://www.admin-enclave.com/en/solutions/windows/82-how-to-fix-the-program-cant-start-because-msvcr110-dll-is-missing-from-your-computer-error-on-windows.html

Related

What do I need to do to program an MFC/STL program in Visual Studio?

I've installed Visual Studio on my private PC, the version is "Microsoft Visual Studio Community 2019", version 16.1.6.
In order to prepare a job interview, I'd like to do some basic MFC/AFX programming, starting by the basic CMapStringToString example from the Microsoft website.
This, however, seems not to work, as I don't have access to the mentioned file afxcoll.h. Indeed: there is no file, called afx*.h on my PC.
Is this a limitation of my free downloaded Visual Studio installation, or is there any add-in, add-on, extension or whatever I can install in order to work with CMapStringToString objects?
Thanks in advance
You need to explicitly install MFC support in Visual Studio - which you can do on Community editions:
Open Visual Studio Installer from your Start Menu
Click the Modify button
Select the Individual Components tab
Scroll down to SDKs, Libraries and frameworks
Check the various MFC/ATL options for various platforms

Fresh installed Visual Studio 2017 won't create C++ project with error 0x80041fe2

I just installed Visual Studio 2017 (current time: August 2018). I only need C++ so I picked C++ component and deselected everything listed in "optional" items. Then after the installation, I cannot even create any C++ projects including both console and desktop projects. It gives me a error dialog of "Exception from hresult 0x80041fe2".
I did a search online. This question, visual studio and qt: HRESULT: 0x80041FE2, seems close but it's QT related, so it's different.
I did eventually find a solution. Will answer my own question below.
It turns out this is probably a Visual Studio installation bug. The "Optional" components are really not totally optional. I then picked the following Optional components and then it works:
Just-in-Time debugger
VC++ 2017 version 15.8 v14.15 latest v141 tools
C++ profiling tools
C++/CLI support
VC++ 2015.3 v14.00 (v140) toolset for desktop
Almost certainly not all of these are needed. But I don't want to spend time to find out which "Optional" is actually not optional...

How to choose Visual Studio solution Platform Toolset for maximum compatibility

Background
I am open sourcing a few old Visual Studio applications I created a while back. I have created new solutions using my new VS2012 environment for them and have gotten the projects set up as git repositories. I got everything working fine in Visual Studio 2012 with no changes to the source code, all I needed to do was make sure I was linking the proper libraries in the new project configurations.
I would like to configure these projects as to have maximum compatibility for others downloading the project from Github. On this machine I have VS2010 installed alongside the latest VS2012 version. After I got everything working right for both of the projects in VS2012, I tried to open them up in VS2010.
When I tried to build I got a single error:
Specified platform toolset (v110) is not installed or invalid.
Please make sure that a supported PlatformToolset value is selected.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets 518
What I Tried
So I opened up the properties for the project, went to Configuration Options --> General and the Platform Toolset was indeed set to Visual Studio 2012 (v110). This input is a drop down box and the v110 value is not listed, instead I get two choices:
v100
v90
These correspond to VS2010 and VS2008 respectively. If I change the value to v100 and rebuild I get no errors and my program runs just fine in my Visual Studio 2010 environment.
When I open the project back up in Visual Studio 2012, if tells me that I have an old project file and asks if I want to upgrade, I say yes and it upgrades. I rebuild and run to make sure everything is still working. When I open the configuration options in VS2012 the Platform Toolset is set back to `Visual Studio 2012 (v110) but clicking the drop down input there are several more choices listed:
Visual Studio 2012 (v110)
v110_wp80
Visual Studio 2012 - Windows XP (v110_xp)
Visual Studio 2010 (v100)
Visual Studio 2008 (v90)
‹inherit from parent or project defaults›
My Questions
This has led me to several questions. I am going to pose them all. It would be nice to get as much information as I can, but a good answer to just one of them would probably solve my problem.
If I'm not using features specific to newer versions of Visual Studio, is it possible to set up a solution which can be opened and run without modification in as many versions as possible (ie. 2008, 2010, or 2012)? If so, how?
If I set the Platform Toolset to v90 (VS2008) from within Visual Studio 2012, and it's able to build and run, does this mean that it will build and run for users with VS2012, VS2010, and VS2008?
What exactly does the <inherit for parent or project defaults> option do? What would the project defaults be set up as? Can this be used to tell Visual Studio to try to using whichever installed Platform Toolset will work.
Are there any other options besides Platform Toolset in Visual Studio that I can set to increase compatibility with others' development environments?
This is a somewhat tricky situation. One of the underlying problems here is that VS2010 and VS2012 use MSBuild to build C++ projects, but VS2008 farmed it out to VCBuild instead. You can see this by comparing the project files. VS2010/VS2012 use .vcxproj, while VS2008 uses .vcproj.
If I'm not using features specific to newer versions of Visual Studio,
is it possible to set up a solution which can be opened and run
without modification in as many versions as possible (ie. 2008, 2010,
or 2012)? If so, how?
For maximum compatibility, you want to target the lowest common denominator (i.e. vc90 in this case). Note that when you do the upgrade, the solution file and project files get upgraded to the latest version, which may break compatibility with older versions of Visual Studio.
If I set the Platform Toolset to v90 (VS2008) from within Visual
Studio 2012, and it's able to build and run, does this mean that it
will build and run for users with VS2012, VS2010, and VS2008?
Not really, due to the .vcxproj / .vcproj conflict stated above.
For example, I currently have a set of .vcxproj files and a solution designed for VS2010. I use VS2012 as my IDE, so when I open the VS2010 solution in VS2012, I choose to NOT upgrade it and simply open it as is. VS2012 and beyond should be backwards compatible back to VS2010 as far as project files go.
For maximum compatibility in development environments, my recommendation would be use VS2010's solution as the baseline, targeting v100. Developers can use any version newer than that and it should all work together gracefully.

"program can't start because msvcp100.dll is missing" for Every single code

This error is taking toll of my training schedule.
Everytime I create any C++ application in my VS2010, It runs fine on my machine but if I run it on different machine, It starts with this error.
Error goes if I copy msvcp100.dll in System Folder then it shouts for some other DLL. It requires some 5-6 different DLLs.
Most irritating part is even if I write a simple Console based Addition program, It gives this error.
(I should not but)I would have agree if I design some fancy forms and all... But for simple Addition program????
Am I missing out somethings in Settings? or VS2010 to blame??
Somewhat related question: this But this problem seems different
By default, MSVC projects are set to link against the dynamic run time library which generates a dependency on the visual C++ run time redistributable. As you have already found out, this dependency is not guaranteed so your install utility has to install the visual c++ run time first.
You can avoid this by changing your project settings. Load the project properties and go to: "Configuration Properties"/"C/C++"/"Code Generation"
In the item labelled "Runtime Library", select "Multi Threaded (/MT)"
for the release version"Multi Threaded Debug (/MTd)" for the debug version.
You have to be careful while doing this that all the other libraries that your application links are also compiled against the static run time.
You need to have Visual C++ Libraries installed if you want to run your app.
Using the compiler options to change the runtime library worked for me ("Configuration Properties"/"C/C++"/"Code Generation". In the item labelled "Runtime Library", select "Multi Threaded (/MT)" for the release version and "Multi Threaded Debug (/MTd)" for the debug version). I did have to do both the debug and the release to get the release to work. Don't know why (it is possible that I did not do it correct the first time).
Note: I was using VC2010 Express version on Windows 7 to compile. I tested on an old XP machine.
Another note: MS information at http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=vs.100).aspx
If you have installed a new copy of Windows on your computer or have reinstalled one then you will come across an error called "The program can’t start because MSVCP100.dll is missing from your computer. Try reinstalling the program to fix the problem." on your computer.
The basic reason behind this error is that the Visual C++ doesn’t get installed when you reinstall or install a fresh copy of Windows operating system. In order to check Visual C++ is installed on your PC or not, open Control Panel → All Programs and Features and then search for Visual C++ in the software list. If you don’t find the software installed there then you have to install it.
I would suggest, first of all, install the Visual C++ 2010 package and check if it has solved msvcp100.dll missing error or not. If the issue is not resolved by the Microsoft Visual C++ 2010 then install 2013 or 2015 versions of Microsoft Visual C++. Here is the list of download links of Microsoft Visual C++ for both x86 and x64 architectures:
Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)
Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)
Visual C++ Redistributable Packages for Visual Studio 2013
Visual C++ Redistributable for Visual Studio 2015
→ The latest supported Visual C++ downloads
I hope, now you are able to fix “The program can’t start because MSVCP100.dll is missing error on your computer. To know more details, you can follow this guide.
Thanks

Running Visual Studio 2005, 2008, and 2010 on same system

I have around 50 projects in Visual Studio 2005 that I am building a new development machine for and I'd like to slowly move those projects to VS 2008 but also have 2010 available for select new projects.
Can this work? Are there any gotchas for this sort of setup? Any general advice for running multiple versions of Visual Studio on the same system would be greatly appreciated. Specifically related to managing a controlled migration of projects to new versions but being able to selectively keep some on old versions.
I've got 7.1, 8, and 9 installed at the same time (well, and VB part of 6 as well) and I've not really had a problem opening projects file in the wrong version. The Visual Studio Solution files is "associated" with a particular version even if they all have the same extension of .sln, as you can see from its little icon. Microsoft Visual Studio Version Selector seems to handle individual project files (.vcproj) fine as well.
The only thing I've had is the individual source code files not opening up in the latest version like I want, but that's easily fixed with the click of a little button in VS Opions.
Microsoft have this to say:
Visual Studio supports the installation of Visual Studio .NET 2002, 2003, ... on the same computer.
In general, you should install the earliest release of Visual Studio first, and then install subsequent versions of Visual Studio in the order in which they were released.
Make sure when you open up the 2005 files you're doing it in 2005. To open them in another would require a conversion which would render them incompatible with the older compiler set-up. To aid this, structure whatever workspace you're using into 2005, 2008, and 2010 so as to minimize accidental chance of this.
Second, when you double click to open the projects, it will invariably attempt to open them with 2010. You'll have to start with VS#### instead of the solution/project unless you're in the 2010 workspace.
I have VC6, VB6, VS 2008, and VS2010 RC installed on Windows Vista. I cannot double click on the VC6 dsp files without VS2010 opening and asking to perform the conversion. The 2008 C# projects open in 2008 as long as I use the solution file. The 2008 project file opens in 2010 instead of 2008 even though the version selector is the default program. Most of the time I try to remember to open the desired version of Visual Studio and then open the project.
You can mitigate some of these issues by changing the default program associations in the control panel or the registry.
Update: This setup works on Windows 7 x64, with the addition of VS2013.
Yes it can work. I'm not sure if you have to install them in a particular order... but install them in order of the versions... 2005, 2008, 2010. Should be good to go.
I can't speak for 2010, but I have run 2005 and 2008 at the same time on my system without any fuss.
And I made the double-click mistake that wheaties warns about more than once :(
I have VS2005 & VS2008 running without any issues. I have had problems when working with betas, express editions & am assuming you don't have them.
I would say refrain from making too many changes to the setup of these editions, it should be fine.
I also had the same doubt. I work at my company which is still on VS 2008 and I want to personally use the VS 2010 and not risk the 2008. I installed the 2010 and it worked fine with the 2008. Just make sure you note the projects that are in 2005 and open them with the same accordingly.
The reason why it works is simple: if you open your solution file in Notepad, you'll see which version of VS is related to your project.

Resources