
之前一直正常使用,最近在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....) 所以之前程序運行正常。
