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库文件(即使是错误的)。

32/64 DLL 自动选择加载