Packaging DLL file with my application - visual-c++

When I moved my C++/CLI application to another Win 7 machine, it said that MSVCR100.dll is missing although that was a release version of the application. What is the file MSVCR100.dll ? Is it possible to combine it with my application,if how? Any other suggestions?

MSVCR100.dll is part of the VC++ 2010 runtime; it's a dedicated downloadable from Microsoft and required for most programs compiled with VC++ 2010.
Due to the newish side-by-side (SxS) deployment of DLLs, it's not so simple to extract the handful of files and deploy them manually.
http://www.microsoft.com/download/en/details.aspx?id=8328
Apparently, SxS is so 2008. Visual C++ 2010 just uses all different filenames for everything.

You need to ensure that the .NET Framework and the Microsoft Visual C++ 2010 Redistributable
are both installed on the new machine, either that, or package the necessary dlls with your deployment.

Related

WDK + Windows 8 + MSVC 2010

ALL,
I would like to build a dokan library. According to dokan instruction I need the WDK which can be downloaded from the Microsoft website.
Problem is - I have MSVC 2010 and it looks like WDK is for MSVC 2013 and I don't know what to do.
Could someone explain to me where can I get WDK for MSVC 2010?
Thank you.
The Windows 8.x SDK generally works with Visual Studio 2010--with the exception of a few places in the include\winrt headers where they used C++11 constructs not supported prior to VS 2012, specifically strongly-typed enumerations. The issue is there is no automatic integration for the VS 2010 toolset.
The recommended solution is to use .props files. See the Visual C++ Team Blog for details, and I have the fully authored .props files for both x86 and x64 hosted on my blog. These are also used in my open-source projects (DirectX Tool Kit, DirectXTex, DirectXMesh, UVAtlas, DXUT, Effects 11) which support VS 2010 + the Windows 8.1 SDK.
I believe the situation is basically the same with the Windows Driver Kit 8.x as it actually integrates into the existing Windows 8.x SDK. You will just need to add include\km and lib\km folders to the .props for the kernel mode projects.
That said, with VS 2013 Community edition being freely available full-featured version of Visual Studio under generous license terms, I'm not sure why you are sticking with VS 2010...

Can an application built with VC++ 2010 run reliably with just the VC++ 2013 redistributable installed?

So here is my situation: We have some applications built using VC++ 2010, but others are now built with VC++ 2013.
In the past, when setting up a client machine, only VC++ 2010 Redistributable was installed, but with the development of some of these applications now in VC++ 2013 we need to install the VC++ 2013 Redistributable.
I know that the Redistributable packages are installed side by side and that applications developed in VC++ 2010 will go to their appropriate file set if it exists on the machine.
But can a VC++ 2010 project run reliably with just the VC++ 2013 redistributable installed?
This question occurred to be when I saw that Microsoft named the VC++ 2010 and 2013 redistributable install files the same. For example, vcredist_x86.exe.
Thanks for your time!
No, your VS2010 built app will need msvcr100.dll (etcetera), the VS2013 installer will deploy msvcr120.dll
Doing anything to force VS2010 to use the VS2013 runtime library is very unlikely to turn out well. The new C++11 language standard has caused lots of upheaval in the runtime libraries. The good kind of upheaval, but not exactly very compatible with old compilers.
You must therefore install the VS2010 runtime libraries as well.

Choose VC++ runtime version of an MFC project in Visual Studio

I created a MFC project with VS2013 and it works fine on my computer. But it won't run on a computer without VC++ Redistribution 2013 installed.
Can I specify a lower VC++ runtime version of an MFC project in Visual Studio?
I think even if it is lower vc++ runtime version, you may face similar problem.
If you can tolerate exe file is larger than before, just change the value of Use of MFC to Use MFC in a Static Library in project property page. By doing so, you don't need to distribute mfc modules related.
Otherwise, you have to distribute relative mfc modules such as mfc100.dll.
This link may help you.
You need to create installation package for your program. As Visual Studio user, you can create an installation with InstallShield Limited Edition. Installation package should contain correct C++ and MFC runtime version for your program.
See also:
InstallShield Limited Edition http://msdn.microsoft.com/en-us/library/dn531020.aspx\
Walkthrough: Deploying Your Program (C++) http://msdn.microsoft.com/en-us/library/bb384837.aspx
Specifically, to add VC++ Runtime: On the Redistributables tab in the editor window, select the Visual C++ 11.0 CRT check box. If you use MFC, check also MFC redistribution.

Where are the Office PIA's installed?

I am writing an application in IIS that uses the Microsoft office excel automation library. I have downloaded the Office PIA from here and it downloaded an executable called PIARedist which I ran. This unpacked into 3 files o20120_eula.txt, o2012_readme.rtf and o2012pia which is a windows installer package. I ran the windows installer package, and that's where I got stuck, I expected it to unpack all of the libraries that I need, or put them somewhere in the file system, but nothing. The installer ran, but with no indication of what it was doing or what it was installing. Where do I go from here to obtain these libraries? And is developing on windows always this awful?
They live here:
C:\Program Files x86\Microsoft Visual Studio 14.0\Visual Studio Tools for Office\PIA
Where do I go from here to obtain these libraries?
They will have been installed in the GAC. After installing, you should be able to add a COM reference to Excel in Visual Studio, and it will reference the PIA assembly rather than generating an assembly with TLBIMP.
And applications that reference the PIA from that version of Office will be able to run.
And is developing on windows always this awful?
Not always, but more often than I'd like.
It turns out I just hadn't installed office on my machine. I assumed that it came preinstalled since there was an icon for it in the start menu, but that icon was what installed office.

Visual C++ runtime compatibility

If I compile code using the Visual C++ 2008 compiler, do I need to have the matching service pack of the runtime library for that compiled code to run correctly?
Suppose I compile code with Visual C++ 2008 compiler (any edition). Will this work with the SP1 VC++ 2008 runtime library?
Conversely, if I compile code with a Visual C++ 2008 SP1 compiler (any edition). Will this work with the RTM VC++ 2008 runtime library?
Probably.
This is part of the reason that MS introduced the idea of Side by Side assemblies. Your code specifies its preference, and the OS gets to offer the assemblies it currently has available. If there is a match, your code runs. If not, no luck.
You do have to follow all the usual guidelines for application manifests and probably make the installation of the runtime library available in your installation package in any case.

Resources