我想要完成它描述的内容here,但接受的解决方案对我无效。我想,其原因解释here:在同一进程中加载2个版本的相同DLL
如果具有依赖性的DLL被指定一个完整路径,系统 搜索DLL的依赖DLL ,好像他们是装有只是他们 模块名加载 。
如果用相同的模块名称DLL被 已经加载到内存中,系统只 检查重定向和 清单解决的 加载的DLL,无论是在哪个目录 前,系统不不是搜索 的DLL。
我希望我的应用程序在以下结构中。
c:\Exe
|
|----- c:\DLL\DLL.dll, c:\DLL\common.dll
|
|----- c:\DLL2\DLL2.dll, c:\DLL2\common.dll
我的EXE将通过
LoadLibrary("c:\\DLL\\DLL.dll");
LoadLibraryEx("c:\\DLL2\\DLL2.dll");
共同
加载DLL文件在两种情况下是隐式加载。
我试过SetDllDirectory选项,但总是只有一个common.dll加载。
我在common.dll中添加了版本信息。 c:\ DLL \ common.dll具有版本2.0.1.0而c:\ DLL2 \ DLL2.dll具有版本4.0.1.0
我嵌入下面的清单与相应的版本信息,但它没有帮助。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="common" version="4.0.1.0" processorArchitecture="x86"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
有没有解决这个问题的方法?
谢谢。我将清单嵌入到DLL中。所以,它看起来像我做你在1推荐。或者我错过了什么?清单是否正确? – PeeWee2201 2011-02-16 15:59:30