我正在创建一个 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.dll
LoadLibrary
B.dll
dependency.dll
dependency.dll
A.dll
问题是使用了byB.dll
的版本,因为这是已加载到内存中的具有该名称的模块的第一个版本。dependency.dll
app.exe
有没有办法强制B.dll
使用dependency.dll
已加载的版本A.dll
?
语言是 C++,如果相关的话。