我刚刚建立一个新的更快的电脑,成为我的开发站。当我运行一个应用程序时,我正在使用Delphi 6 Pro时遇到DLL未能找到问题,但我不认为问题出在Delphi上。请记住,我拥有与旧计算机上的目录和工具完全相同的设置,并且在该计算机上可以在运行时找到DLL,而且不会失败。症状似乎是我的PATH环境变量中只有一些目录正在被搜索,而最近添加的目录不是。我试图把包含缺少DLL的diretory放在当前用户PATH中,然后在系统PATH中,并且仍然无法找到DLL。DLL搜索路径只是部分搜索
这里有一些事实:
的DLL会出现在PATH环境变量中,如果我运行一个命令窗口,查询的路径的正确路径。
如果我把DLL放在一个像Windows主目录的目录下,它可以在运行时找到。
如果我使用Unix风格的“where is” utilty形式flounder.com它找到
我监控的程序在运行时使用(是Sysinternals的微软现在的)进程监视器实用程序在路径中的DLL,所以我可以观看系统搜索DLL。系统确实在路径中的10个子目录中搜索了7个,但由于某种原因,如上所述,忽略了其中的3个。请注意,我知道无效目录被从路径中删除,但我三重检查,他们确实是有效的目录。
最后,我创建了一个C:\ DUMMY目录,并将该目录添加到PATH环境变量中,当我检查进程监视器时,该目录也从未被搜索过。
这真是奇怪的行为,我从来没有见过。就好像在对PATH进行某些修改之前,系统在搜索DLL时使用了旧PATH的副本。
有没有人有解决方案或诊断的想法?
谢谢。
你怎么改变路径? – jdigital 2010-02-25 04:24:41
最简单的解决方案,如果路径被缓存,就是重新启动机器。当然我们可以弄清楚这个问题,但是值得付出努力吗? – jdigital 2010-02-25 04:25:50