Reputation: 1526
I have a software with a couple of executables, that depends on both VC++ 2012 and VC++ 2010 (msvc110.dll
, and msvc100.dll
, something like that). I want to ship my application with the 2012 version redistributable, that is 7mb, and avoid using the 2010 redistributable so I reduce the size of the installer.
My question is, is the 2012 version of the redistributable backwards compatible with the 2010 version? Or should I embed both of them in the installer?
Note that the executables are already compiled, and I don't have the source code to compile them using the same version.
Upvotes: 1
Views: 3732
Reputation: 2763
Unfortunately if you don't ship the runtime the module was compiled against,if it does not exist on the target system, your app will fail. How it fails depends on how you built your app (e.g. linked lib dll, versus OpenLibrary module).
As for compatibility, our team had similar questions so I wrote experimental test code using VS2005, VS2010 and VS2012 modules where one module would create a std::vector (etc) and pass it to another module for use. It failed badly. Extremely easy to reproduce this experiment.
You will need to ship both.
Upvotes: 2
Reputation: 875
You have several exe, just ship them all or mark it down as a requirement for your app. DLLs are not big. If you can rebuild apps to align them so they use the same crt, that would be better.
Upvotes: 1