可以在同一个应用程序中加载不同版本的DLL吗?

Sul*_*lla 6 c++ dll manifest dllimport

我的应用程序使用一个版本的库(a.dll),我正在使用另一个DLL(b.dll),后者又使用我使用的相同库(a.dll)的旧版本.我正在通过嵌入清单文件来构建应用程序.我使用的DLL也使用嵌入式清单文件.我在WinSXS文件夹中有两个版本的库.我的应用程序无法加载适当版本的DLL.

是否有单独的清单文件(不嵌入DLL)有助于解决问题?有什么工作?

Chr*_*cke 6

您的情况正是WinSxS应该解决的情况.它应该工作.

或者:清单文件指向相同的版本,或者其中一个清单文件没有正确嵌入,或者

WinSxS中的共享程序集安装了一个配置策略,该策略自动将v1.0的请求重定向到v1.1


需要一些说明:App.exe和b.dll隐式链接到a.dll?或者他们通过LoadLibrary加载它.

如果B.DLL使用LoadLibrary显式加载A.DLL,则需要将ISOLATION_AWARE_ENABLED添加到预处理器定义,以确保B.DLL进行的LoadLibrary调用在正确的激活上下文中查找.否则,它们将在EXE清单创建的默认激活上下文的上下文中生成.