我剛剛建立一個新的更快的電腦,成爲我的開發站。當我運行一個應用程序時,我正在使用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