http://www.perlmonks.org?node_id=993848

A worked example of using manifests to create side-by-side assembles to allow a single process to use two disparate versions of the same DLL.

Main application executable::

  1. MyApp.c:

    MyApp.exe.manifest:

  2. MyDll.c::

    Mydll.dll.manifest:

  3. Dep.c:

    Dep.dll.manifest:

Extension dll:

  1. Ext\ExtDll.c:

    Ext\ExtDll.manifest:

  2. Ext\Dep.c:

    ext\Dep.dll.manifest:

Build:

C:\test\myApp\Ext>cl /nologo /LD Dep.c Dep.c Creating library Dep.lib and object Dep.exp C:\test\myApp\Ext>mt /nologo -manifest Dep.dll.manifest -outputresourc +e:Dep.dll;2 C:\test\myApp\Ext>cl /nologo /LD ExtDll.c Dep.lib ExtDll.c Creating library ExtDll.lib and object ExtDll.exp C:\test\myApp\Ext>mt /nologo -manifest ExtDll.dll.manifest -outputreso +urce:ExtDll.dll;2 C:\test\myApp\Ext>cd .. C:\test\myApp>cl /nologo /LD Dep.c Dep.c Creating library Dep.lib and object Dep.exp C:\test\myApp>mt /nologo -manifest Dep.dll.manifest -outputresource:De +p.dll;2 C:\test\myApp>cl /nologo /LD myDll.c Dep.lib myDll.c Creating library myDll.lib and object myDll.exp C:\test\myApp>mt /nologo -manifest MyDll.dll.manifest -outputresource: +MyDll.dll;2 C:\test\myApp>cl /nologo myApp.c MyDll.lib myApp.c C:\test\myApp>mt /nologo -manifest MyApp.exe.manifest -outputresource: +MyApp.Exe;1

And a run:

C:\test\myApp>MyApp.Exe Ext\ExtDll.dll depFunc: called with 42, 3.141593 MyDLL: depFunc return 1 depFunc: called with 12345, 98765 ExtDll: depFunc returned: 1

And there you have it. One executable using two different versions of the same (named) dll without conflict.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

RIP Neil Armstrong

Replies are listed 'Best First'.
Re: [OT] Side-by-side assemblies: The nitty-gritty.
by Anonymous Monk on Sep 16, 2012 at 15:24 UTC
    Ahh, how much easier Unix/Linux make it to be able to do such a simple thing.

      Demonstrate!


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      RIP Neil Armstrong

      I was pretty sure that this was just another unfounded *nixy brag.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      RIP Neil Armstrong

Re: [OT] Side-by-side assemblies: The nitty-gritty.
by sundialsvc4 (Abbot) on Sep 18, 2012 at 19:17 UTC

    Hmm... that’s no “boast” ... just a well-known aspect of the system.

    The version-name is part of the file-name and a cache directory is built (in various ways) to allow either a short or a very-specific library name to be requested.   Multiple versions of everything are usually available all the time, so that old software can use old libraries or newer ones as you direct.   The idea of multiple platforms and of targets different from the one you’re on are also considered.   It really is a very different approach.   Which is neither here nor there with regard to your thread.

      Hmm... that’s no “boast” ... just a well-known aspect of the system

      Sorry, but you obviously don't understand the technicalities of the example.

      When you've reproduced the example I gave come back and post it.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      RIP Neil Armstrong