Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The default for Visual Studio 2008 is to bind to version 9.0.21022.8. This is regardless of whatever version of service pack or hotfix you have installed, since updates to Visual Studio should not necessarily force your application to have to upgrade (as described <a href="http://blogs.msdn.com/b/vcblog/archive/2008/05/15/vc-runtime-binding.aspx" rel="nofollow noreferrer">here</a>).</p> <p>Other possible versions are 9.0.30729.1 for Service Pack 1 or <a href="http://support.microsoft.com/kb/2538243" rel="nofollow noreferrer">9.0.30729.6161</a> for SP1 with a security update. There are others.</p> <p>Because of the default behaviour, it is likely that your application is using 9.0.21022.8 and there is a library which has been compiled to use 9.0.30729.1. You can find out what version of each library is dependant on by using the following command line (<a href="http://www.nuonsoft.com/blog/2008/10/29/binding-to-the-most-recent-visual-studio-libraries/" rel="nofollow noreferrer">described here</a>):</p> <pre><code>dumpbin /directives &lt;name&gt;.lib </code></pre> <p>In order to <a href="http://msdn.microsoft.com/en-us/library/cc664727.aspx" rel="nofollow noreferrer">control the version</a> of the runtime that your application binds to you can define preprocessor symbols in your project settings (must be in the project settings or on the command line) to either bind to the default version (9.0.21022.8 - by not defining them) or binding to the <strong>same version</strong> as your installed Visual Studio:</p> <pre><code>_BIND_TO_CURRENT_VCLIBS_VERSION=1 </code></pre> <p>Apparently you can also specify the exact version you want to bind to using the defines from <a href="https://stackoverflow.com/questions/2289593/how-to-select-the-version-of-the-vc-2008-dlls-the-application-should-be-linked-t/2289633#2289633">this answer</a> (maybe I should have found that first before typing all this out :).</p> <p>If you find it is your application that binds to 9.0.30729.1 and the dependant library is binding to 9.0.21022.8 then you simply need to remove the preprocessor definition.</p> <p>The other difficulty is that when you upgrade Visual Studio, the runtime merge modules in your redistributable folder are also upgraded to those versions. So if you have a setup project that uses those merge modules and you are trying to bind to the default version you would end up installing the new versions of the runtimes.</p> <p>Resolving the runtime version would not be a problem if you also distribute the runtime policy merge modules, as the library loader will at runtime look at the policy of your runtime and automatically load the newest version even if you bind to the default version. Even with private assemblies the loader <a href="http://helgeklein.com/blog/2010/03/deploying-visual-c-runtime-files-as-private-assemblies/" rel="nofollow noreferrer">will first look in the WinSxS folder</a> so if the policies are there you will bind to the newest version. So your mixed version numbers in your manifest will both redirect to the newest version.</p> <p>Sometimes that is not desired and you can control that to force it to load only the version in the manifest that you specify, which is explained in an answer to <a href="https://stackoverflow.com/questions/2289593/how-to-select-the-version-of-the-vc-2008-dlls-the-application-should-be-linked-t">this similar SO question</a>.</p>
    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.
 

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