对于动态加载的dll:控制加载哪个dll的最简单方法是不调用搜索逻辑.只有在提供部分路径时才会调用搜索逻辑 - 在调用LoadLibrary时提供dll的完全限定路径,如果该位置中不存在Dll,则调用将失败.
对于静态加载的dll:仅在WinSxS和应用程序的文件夹中搜索属于程序集一部分的Dll.因此,创建一个"虚拟"程序集来保存dll.这就像使用以下内容创建.manifest文件一样简单:
<!-- dummyassembly.manifest -->
<assembly manifestVersion="1.0">
<assemblyIdentity type="Win32" name="dummyassembly" version="1.0.0.0" processorArchitecture="x86"/>
<file name="thedll.dll"/>
</assembly>
Run Code Online (Sandbox Code Playgroud)
将此代码添加到任何只需要使用精确dll的项目中:
#pragma comment(linker, "/manifestdependency:\"dummyassembly'"\
" processorArchitecture='*' version='1.0.0.0' type='win32'\"")
Run Code Online (Sandbox Code Playgroud)
如果dll不存在于同一文件夹中,则无法加载.