SSi*_*ilk 7 windows dll path 32bit-64bit
Windows应用程序通常是否能够区分两个具有相同名称的DLL,一个是32位,一个是64位,如果它们位于系统PATH变量的两个独立路径中?
特别是现在,我有FreeImage的32位和64位DLL,它们位于两个独立的文件夹中,free_image_path\dist32并且free_image_path\dist64我已经添加到系统PATH中.但是,使用它们构建的应用程序也找不到,我想知道这是因为有两个具有相同名称的DLL并且它们无法区分它们.
我还尝试将32位和64位DLL分别放在windows\system和windows\SySWoW64文件夹中,这适用于32位应用程序,但不适用于64位应用程序.
谢谢.
Windows可以判断是否为32位或64位平台编译了给定的DLL,但这对您描述的情况没有帮助.只要在系统路径中找到符合DLL导入的文件名要求的DLL,应用程序进程的DLL加载程序就会停止查找.没有其他资格来匹配代码 DLL.(如评论中所述,非代码资源DLL是一个不同的故事.我怀疑资源DLL不是由核心程序加载器加载,而是由具有不同规则和目标的资源管理器加载.)
如果路径中的第一个DLL是32位且您的应用程序是32位,则DLL加载将起作用.如果应用程序是64位,它将无法加载DLL并且进程将中止.
如果要在系统路径上共存两个DLL,则需要为它们指定唯一的文件名.