我正在创建一个 dll ( A.dll),它是隔离的 ( ISOLATION_AWARE_ENABLED),依赖于dependency.dll并具有一个清单文件:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<assemblyIdentity name="my.assembly.name" version="1.0.0.0" type="win32"/>
<file name="A.dll"></file>
<file name="dependency.dll"></file>
</assembly>
A.dll由应用程序加载,该应用程序app.exe本身依赖于不同版本的dependency.dll. 清单确保dependency.dll并排使用两个版本。到目前为止没有问题。
现在,A.dll通过. 从外部目录加载,取决于并且实际上需要使用已在内存中使用的版本。B.dllLoadLibraryB.dlldependency.dlldependency.dllA.dll
问题是使用了byB.dll的版本,因为这是已加载到内存中的具有该名称的模块的第一个版本。dependency.dllapp.exe
有没有办法强制B.dll使用dependency.dll已加载的版本A.dll?
语言是 C++,如果相关的话。