1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Correct merge modules and correct CRT dll's for applications/ dll's

Discussion in 'MFC' started by PrasadDixit, Sep 29, 2010.

  1. PrasadDixit

    PrasadDixit New Member

    Sep 29, 2010
    Likes Received:
    Trophy Points:

    I have developed a 32 bit dll say myDLL32.dll using Visual Studio 2008 SP1. Associated CRT dll’s (i.e. msvcr90.dll, msvcp90.dll, and msvcm90.dll) have version 9.0.30729.1. I embed the manifest into myDLL32.dll. When I look for the manifest file for this DLL in the build directory, it always points to version 9.0.21022.8 of CRT dll’s.

    Now I want to distribute myDLL32.dll along with necessary CRT dll’s through an installation project created in Installshield. I want to install both Shared and Private assembly of CRT dll’s. I understand that if both shared and private assemblies are installed, shared assemblies (installed in winsxs folder) will take precedence and in that case my private assembly will be ignored.

    My question is, in order to ensure that myDLL32.dll will find correct version of CRT dll’s

    A. For shared assembly: which version of merge module should I use?
    i) A merge module which installs version - 9.0.21022.8 of CRT dll’s which is embedded in myDLL32.dll or
    ii) A merge module which installs version – 9.0.3729.1 which is for VS 2008 SP1 or
    iii) A merge module which installs version – 9.0.3729.4148 of CRT dll’s which are installed after installing latest redistributable package for VS 2008 SP1

    B. For private assembly which version CRT Dll’s should I copy to my applications directory?
    After going through various blog’s on MSDN’s website I learned that I can copy
    msvcr90.dll, msvcp90.dll, msvcm90.dll, and Microsoft.VC90.CRT.manifest into my applications directory. My Microsoft.VC90.CRT.manifest found in C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT folder points to version 9.0.30729.4148. Again, which version of CRT’s dll’s should I copy in my applications directory?
    i) Version - 9.0.21022.8 of CRT dll’s which is embedded in myDLL32.dll or
    ii) Version – 9.0.3729.1 which is for VS 2008 SP1 or
    iii) Version – 9.0.3729.4148 of CRT dll’s to which my Microsoft.VC90.CRT.manifest points

    I am really confused about it. I hope guru’s in this area can help me out. Thanks!

Share This Page