【发布时间】:2011-01-20 20:29:44
【问题描述】:
我刚刚设置了一台速度更快的新计算机作为我的开发站。当我运行我正在使用 Delphi 6 Pro 开发的应用程序时,我遇到了一个 DLL not start found 的问题,但我认为问题不在于 Delphi。请记住,就我的旧计算机上的目录和工具而言,我的设置完全相同,并且在那台计算机上,DLL 在运行时找到,没有失败。症状似乎是只搜索我的 PATH 环境变量中的一些目录,而最近添加的目录没有。我已经尝试将包含丢失 DLL 的目录放在当前用户 PATH 中,然后在系统 PATH 中,但仍然找不到该 DLL。
以下是一些事实:
如果我运行命令行窗口并查询 PATH,则 DLL 的正确路径确实出现在 PATH 环境变量中。
如果我将 DLL 放在类似于 Windows 主目录的目录中,它会在运行时找到。
如果我使用 Unix 风格的“whereis”实用程序表单 flounder.com,它确实会在 PATH 中找到 DLL
我在运行时使用(现在是 Microsoft 的 SysInternals)进程监视器实用程序监视程序,因此我可以监视系统搜索 DLL。系统确实在路径中的 10 个子目录中搜索了 7 个,但由于某种原因,正如我上面所说的,忽略了其中的 3 个。请注意,我知道从路径中删除了无效目录,但我进行了三次检查,它们确实是有效目录。
最后我创建了一个 C:\DUMMY 目录并将该目录添加到 PATH 环境变量中,当我检查进程监视器时,也从未搜索过该目录。
这是我从未见过的非常奇怪的行为。就好像在对旧 PATH 进行某些修改之前存在一个幽灵副本,系统在搜索 DLL 时正在使用它。
有人有解决方案或诊断想法吗?
谢谢。
【问题讨论】:
-
你是怎么改路径的?
-
最简单的解决方案,如果路径被缓存,就是重新启动机器。我们当然可以找出问题所在,但值得付出努力吗?
标签: delphi search dll path environment