QT5 編譯程序運行,報錯丟失libgcc_s_sjlj-1.dll。嘗試重新安裝該程序以解決此問題。


之前一直正常使用,最近在QT Creator中運行程序,直接程序異常結束,單獨啟動EXE程序時,報以上錯誤。

最后把問題鎖定在libstdc++-6.dll庫上,嘗試把QT環境bin目錄下的libstdc++-6.dll拿到程序運行目錄下,臨時解決此問題。

 

 

 原因是最近安裝過一個程序,這個程序在C:\Windows\System32下放了一個libstdc++-6.dll:

解決方式是把System32下的libstdc++-6移動到新安裝程序目錄下, 這樣QT程序就能根據Windows動態庫搜索規則,正常命中 PATH中QT路徑下的libstdc++-6.dll。

先安裝的程序也可以正常運行,如果不知道System32下的libstdc++-6.dll庫是哪個程序放哪的,那只能看自己取舍了。

 

補充:

 Windows程序運行動態庫搜索目錄順序(參考: https://www.cnblogs.com/findumars/p/4995536.html):

1. 程序所在目錄下搜索

2. Windows 系統目錄

3. Windows\System32 目錄

.....

n. PATH 環境變量中目錄

因為新安裝的程序在Windows\System32目錄下放了一個libstdc++-6.dll,所以程序在運行的時候搜索動態庫過程:

1. 程序所在目錄下搜索 libstdc++-6.dll: 沒有

2. Windows下搜索 libstdc++-6.dll: 沒有

3. Windows\System32 下搜索 libstdc++-6.dll: 有! 搜索結束

以前Windows\System32下沒有libstdc++-6.dll,所以還會根據搜索過程向下搜索:

.....

n. PATH環境變量中;分割開,每個路徑下搜索libstdc++-6.dll, 一般安裝QT環境后,會在PATH中至少添加一個目錄,這個目錄下有QT程序運行環境需要的一些庫文件(QTCore、QTNetwork....) 所以之前程序運行正常。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM