Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The <strong>only</strong> version of the C runtime library which is shipped by Microsoft with most of 32 bit Windows versions is <code>msvcrt.dll</code>. This library provides a typical set of library functions required by C and C++ programs. These include string manipulation, memory allocation, C-style input/output calls, etc.</p> <p>Visual Studio 6.0's compiler links against this library, so if you are developing in VS 6.0 you shouldn't encounter any problems on most users' machines.</p> <p>However, if you are developing in VS 2005, VS 2008, VS 2010, VS 2012, VS 2013 or VS 2015, you have to distribute additional C runtime libraries along with your application. This is because their compilers link against <code>msvcrt80.dll</code>, <code>msvcrt90.dll</code>, <code>msvcrt100.dll</code>, <code>msvcrt110.dll</code>, <code>msvcrt120.dll</code> and <code>msvcrt140.dll</code> respectively, which are not shipped with Windows.</p> <h3>Solutions:</h3> <ol> <li><p>Possible solution is to link statically with runtime library, but it may cause a lot of problems in case you have both <code>.exe</code> and <code>.dll</code> in your application. <strong>Don't do that</strong>.</p> <p>To be more specific, I'll allow myself to quote a part of <a href="https://stackoverflow.com/a/14752373/1544364">this</a> answer:</p> <blockquote> <p>Using /MT is risky if you create DLLs as well as an EXE. You'll end up with multiple copies of the CRT in your program. This was especially a problem with earlier versions of VS where each CRT would get its own heap, not so much with VS2012. But you can still have ugly runtime problems when you have more than one "errno" variable for example. Using /MD is highly recommended to avoid such lossage.</p> </blockquote></li> <li><p>Another possible solution is to require an appropriate Microsoft Visual C++ Redistributable package to be installed on the user's machine.</p> <p>It may be done by specifying this requirement in prerequisites property in your setup project.</p></li> <li><p>Also, you can distribute the runtime <code>dll</code> by including in your setup project the appropriate "<a href="http://msdn.microsoft.com/en-us/library/ms235290%28v=VS.100%29.aspx" rel="nofollow noreferrer">merge module</a>". In this case don't forget to add the appropriate "policy merge module" to avoid errors caused by incorrect runtime version.</p></li> <li><p>Finally, you can just put required DLLs in the same folder in which your application is installed.</p></li> </ol> <h3>Further reading:</h3> <ul> <li>"<a href="http://msdn.microsoft.com/en-us/library/vstudio/ms235299.aspx" rel="nofollow noreferrer">Redistributing Visual C++ Files</a>" - Official MSDN documentation</li> </ul>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload