我一直失眠了這個現在幾天的Visual C運行時庫:失蹤
我使用SFML創建一個應用程序,一切都很好,直到我創建了一個新的項目幾天前。之後,當我試圖編譯使用SFML庫的解決方案時,我會得到鏈接器錯誤並丟失DLL文件。
我環顧四周,發現一個名爲dependency walker的程序,它查看程序依賴哪個DLL文件。顯然,我的程序可執行文件缺少一些DLL文件,這些文件應該在windows目錄中。
在發現它們都有前綴「CRT」,後綴爲「Nothing」或「D」,表示它們是Visual C運行庫DLL的前綴之前,我嚇壞了。
即使我沒有從我的電腦中丟失重要的DLL,我仍然需要解決這個問題。不,在問題出現之前,我的個人電腦沒有發生重大的硬件/軟件變更(我沒有防病毒軟件,只相信自己的膽量,我已經有5年沒有問題了),是的, m在tutorial之後正確設置SFML目錄。
我已經嘗試重新安裝和修復VS和我的版本的VS的可再分發VC(這是2012年贏得桌面快車),嘗試乾淨啓動,Windows自身文件檢查(SFC/SCANNOW),並嘗試手動放置DLL到我的目錄中,依賴walker說我錯過了。
有沒有其他人遇到過這個?你是如何解決它的?
*有趣的提示:我可以訪問我學校網絡上的管理員帳戶,並在那裏的計算機上安裝VS以查看問題是否會再次發生。由於這些機器上的Windows目錄永遠不會被修改VS執行正常。難道是我需要得到一個乾淨的Windows安裝?
CRT問題可能是一個巨大的痛苦,我會提到我過去遇到的一個問題,以及我們如何解決它,以防萬一它適用於您。 由於第三方庫及其依賴關係,我們的應用程序在清單中有多個CRT條目。 Windows不喜歡這樣,它可能會導致問題,在這種情況下,它找到Windows目錄中的第三方CRT版本,並且只會在那之後查找CRT文件,並忽略我們在本地目錄中修補的CRT文件。 我們必須對清單進行外部化,清理它只有我們的CRT條目(單個條目),並檢查它以使其永久。 – Scott
對不起,字數限制。我們花了幾天的時間試圖追蹤自己的問題,幾乎沒有關於這種行爲的文件。它可以在一些機器上運行,但不能在其他機器上運行,這一切都取決於那些機器已經修補到Windows的內容,以及它們是否具有我們需要的當前CRT(在構建時從Windows頭文件中提取)。由於缺少的DLL是CRT DLL,也許你有類似的問題? – Scott
非常感謝Scott,我看着它,看到第三方DLL正在調用Windows DLL目錄中缺少的CRT DLL,我只需要替換它們即可。 – Lolechi