32/64 DLL 自动选择加载
64-bit Windows will skip over the "wrong architecture" DLLs when searching, so all you have to do is put your 32-bit and 64-bit DLLs in different directories and add both directories to PATH. 原文出处
64-bit windows系统下,即使是同名DLL文档,自动选择正确的DLL版本。
举个栗子:
动态链接库C.dll有两个版本,分别存放于:
XXX\runtime\x86\C.dll
XXX\runtime\x64\C.dll
系统环境变量Path包含
XXX\runtime\x86
XXX\runtime\x64
32-bit应用程序A自动链接到XXX\runtime\x86\C.dll
64-bit应用程序B自动链接到XXX\runtime\x64\C.dll,跳过XXX\runtime\x86\C.dll,虽然同名,但是系统架构不符合。
Basler pylon就是这么干的。
P.s. 大名鼎鼎的Dependency Walker不遵循这个规则,因此用它来分析软件DLL依赖,只会显示路径中第一个找到的DLL库文件(即使是错误的)。