Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Query on DLL manifest file for a project compiled with VC++ 2005 SP1

Query on DLL manifest file for a project compiled with VC++ 2005 SP1

Scheduled Pinned Locked Moved C / C++ / MFC
c++databasehardware
6 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    ComplexLifeForm
    wrote on last edited by
    #1

    Hi, I am using VC++ 2005 with SP1 compiler for my project. The development is being done on Windows XP Pro + SP2 machine but the application is supposed to run on all platforms from Windows 2000 to Windows 2008. The application is a typical MFC application with one executable and many DLL files. Now the query, compiling and running the application on my machine has no issues. However to run the application on the Windows Vista or 2008 I need to have either Visual C++ 2005 SP1 redistributable installed on the target machine or I should be using building the application with SxS assembly isolation in mind and provide the correct manifest for the executables and dll's (either embed it in the binaries or have them as separate file). Also I am relying on VC to generate/embed the manifest file on its own i.e. I am not supplying manifest file explicitly. So while building the application I have chosen to embed the manifest file and set use isolation linker option. I was hoping that it will work properly, but unfortunately it didn't. When I checked I found that the manifest file embedded in one of the Dll's has different information than other DLL's due to which the application could not load the dependency properly. For this particular DLL the embedded manifest file looks like this I have Microsoft.VC80.CRT and Microsoft.VC80.MFC manifest files along with the proper versions of the DLL files in the output directory. I am u

    K S C 4 Replies Last reply
    0
    • C ComplexLifeForm

      Hi, I am using VC++ 2005 with SP1 compiler for my project. The development is being done on Windows XP Pro + SP2 machine but the application is supposed to run on all platforms from Windows 2000 to Windows 2008. The application is a typical MFC application with one executable and many DLL files. Now the query, compiling and running the application on my machine has no issues. However to run the application on the Windows Vista or 2008 I need to have either Visual C++ 2005 SP1 redistributable installed on the target machine or I should be using building the application with SxS assembly isolation in mind and provide the correct manifest for the executables and dll's (either embed it in the binaries or have them as separate file). Also I am relying on VC to generate/embed the manifest file on its own i.e. I am not supplying manifest file explicitly. So while building the application I have chosen to embed the manifest file and set use isolation linker option. I was hoping that it will work properly, but unfortunately it didn't. When I checked I found that the manifest file embedded in one of the Dll's has different information than other DLL's due to which the application could not load the dependency properly. For this particular DLL the embedded manifest file looks like this I have Microsoft.VC80.CRT and Microsoft.VC80.MFC manifest files along with the proper versions of the DLL files in the output directory. I am u

      K Offline
      K Offline
      KarstenK
      wrote on last edited by
      #2

      The different versions are one is the original version, and the other is the version of the SP1 of VS2008. You to download and install the vc_redist.exe for VS2008 SP1 on the target machines. Thats it :rolleyes:

      Greetings from Germany

      C 1 Reply Last reply
      0
      • K KarstenK

        The different versions are one is the original version, and the other is the version of the SP1 of VS2008. You to download and install the vc_redist.exe for VS2008 SP1 on the target machines. Thats it :rolleyes:

        Greetings from Germany

        C Offline
        C Offline
        ComplexLifeForm
        wrote on last edited by
        #3

        Hi, I have checked at Microsoft site and as per the site the version of file for VC++ 2005 redistributable binaries is 8.0.50727.42 and the file version for VC++ 2005 SP1 redistributable binaries is 8.0.50727.762 And there is no redistributable package of VC++ 2005 with or without SP1 for Window 2008. For VC++ 2008 the MFC and CRT version is 9.0.21022.8 The issue is that why is the linker embedding a manifest file for only 1 particular DLL with MFC and CRT libraries as 8.0.50608.0 and from where it is picking that information. I think it should have used this information either for all DLL's/EXE or none of the DLL's/EXE. And as I have mentioned earlier, the Dependency Scanner tool also does not show any dependency of MFC or CRT binaries with file version 8.0.50608.0. So I am confused here. On the machine I am developing I have never installed any Beta or RC version of Visual C++ 2005. Probably installing the redistributable binaries of VC++ 2005 SP1 on the target machine may solve this issue, but that is not the solution I am looking for. Isn't the purpose of using manifest file for EXE/DLL files is to make sure that your application is not affected and always use the same dependencies if someone removes the redistributable binaries from the target machine? Thanks :) :)

        1 Reply Last reply
        0
        • C ComplexLifeForm

          Hi, I am using VC++ 2005 with SP1 compiler for my project. The development is being done on Windows XP Pro + SP2 machine but the application is supposed to run on all platforms from Windows 2000 to Windows 2008. The application is a typical MFC application with one executable and many DLL files. Now the query, compiling and running the application on my machine has no issues. However to run the application on the Windows Vista or 2008 I need to have either Visual C++ 2005 SP1 redistributable installed on the target machine or I should be using building the application with SxS assembly isolation in mind and provide the correct manifest for the executables and dll's (either embed it in the binaries or have them as separate file). Also I am relying on VC to generate/embed the manifest file on its own i.e. I am not supplying manifest file explicitly. So while building the application I have chosen to embed the manifest file and set use isolation linker option. I was hoping that it will work properly, but unfortunately it didn't. When I checked I found that the manifest file embedded in one of the Dll's has different information than other DLL's due to which the application could not load the dependency properly. For this particular DLL the embedded manifest file looks like this I have Microsoft.VC80.CRT and Microsoft.VC80.MFC manifest files along with the proper versions of the DLL files in the output directory. I am u

          S Offline
          S Offline
          Saurabh Garg
          wrote on last edited by
          #4

          I guess might have installed some hot fix for VC++ and it updated the binaries. It happened to me with VC++ 2008 and I was unable to figure this out for a while. How to determine which DLL/EXE is linked with that version? If you don't have too many DLL's the use good old http://www.dependencywalker.com/[^] to find which modules each DLL depends on. If it depends on CRT or MFC check the version by checking the properties of that DLL in depends. -Saurabh

          1 Reply Last reply
          0
          • C ComplexLifeForm

            Hi, I am using VC++ 2005 with SP1 compiler for my project. The development is being done on Windows XP Pro + SP2 machine but the application is supposed to run on all platforms from Windows 2000 to Windows 2008. The application is a typical MFC application with one executable and many DLL files. Now the query, compiling and running the application on my machine has no issues. However to run the application on the Windows Vista or 2008 I need to have either Visual C++ 2005 SP1 redistributable installed on the target machine or I should be using building the application with SxS assembly isolation in mind and provide the correct manifest for the executables and dll's (either embed it in the binaries or have them as separate file). Also I am relying on VC to generate/embed the manifest file on its own i.e. I am not supplying manifest file explicitly. So while building the application I have chosen to embed the manifest file and set use isolation linker option. I was hoping that it will work properly, but unfortunately it didn't. When I checked I found that the manifest file embedded in one of the Dll's has different information than other DLL's due to which the application could not load the dependency properly. For this particular DLL the embedded manifest file looks like this I have Microsoft.VC80.CRT and Microsoft.VC80.MFC manifest files along with the proper versions of the DLL files in the output directory. I am u

            S Offline
            S Offline
            Saurabh Garg
            wrote on last edited by
            #5

            Also by any chance is any of your DLL a shell extension? Or perhaps you use a 3rd party library it uses the newer version of CRT or MFC. -Saurabh

            1 Reply Last reply
            0
            • C ComplexLifeForm

              Hi, I am using VC++ 2005 with SP1 compiler for my project. The development is being done on Windows XP Pro + SP2 machine but the application is supposed to run on all platforms from Windows 2000 to Windows 2008. The application is a typical MFC application with one executable and many DLL files. Now the query, compiling and running the application on my machine has no issues. However to run the application on the Windows Vista or 2008 I need to have either Visual C++ 2005 SP1 redistributable installed on the target machine or I should be using building the application with SxS assembly isolation in mind and provide the correct manifest for the executables and dll's (either embed it in the binaries or have them as separate file). Also I am relying on VC to generate/embed the manifest file on its own i.e. I am not supplying manifest file explicitly. So while building the application I have chosen to embed the manifest file and set use isolation linker option. I was hoping that it will work properly, but unfortunately it didn't. When I checked I found that the manifest file embedded in one of the Dll's has different information than other DLL's due to which the application could not load the dependency properly. For this particular DLL the embedded manifest file looks like this I have Microsoft.VC80.CRT and Microsoft.VC80.MFC manifest files along with the proper versions of the DLL files in the output directory. I am u

              C Offline
              C Offline
              ComplexLifeForm
              wrote on last edited by
              #6

              I managed to make my application totally standalone in the sense that now it can be simply copied and executed on any target machine without worrying whether the proper side-by-side assemblies are installed on target machine or not. For those interested here is link which really helped me http://blog.kalmbach-software.de/2008/05/03/howto-deploy-vc2008-apps-without-installing-vcredist_x86exe Though the article is for VC2008 but it is applicable to VC2005 as well. However there is a small issue with the method mentioned. If your application is dependent on a 3rd party DLL which has embedded manifest file then the method will not work. In such case probably installing the redistributable will be a better idea. Thanks :) :)

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • World
              • Users
              • Groups