天天看點

疑難雜症之vscode--During startup program exited with code 0xc0000139.--缺失重要檔案(雜記)問題展示解決方法:

問題展示

在vscode中,隻要用了STL容器,就會出現這樣的提示

疑難雜症之vscode--During startup program exited with code 0xc0000139.--缺失重要檔案(雜記)問題展示解決方法:

發現自己的 vscode 不能運作帶有部分 stl 庫的程式,編譯不會報錯,運作也不會報錯但是也沒有結果,調試的話會有下圖中報錯。拿一個以前的程式做測試,如果沒有string或者vector一切正常。

如果沒有使用STL容器就一切正常,應該不是vscode配置的問題,而且運作路徑也沒有中文。

無法定位程式輸入點__gxx_personality_sj0于動态連結庫。網上搜了半天,應該是這個錯誤資訊困擾了我。

問題在于 libstdc++ -6.dll 動态庫在環境變量中存在多個,作業系統運作C/C++程式的時候不知道該用哪個庫檔案,用 everything 搜一下 libstdc++ -6.dll 就可以發現筆者的電腦中有很多 libstdc++ -6.dll。(極大可能是因為anaconda那一個,在環境變量裡面搞鬼)

解決方法:

  1. 在 /Mingw/bin 目錄下,找到 libstdc++ -6.dll 檔案,将其放到C:\Windows\System32目錄下
  1. 使用 g++ -static xxx.cpp 編譯并運作。
  1. 在 /Mingw/bin 目錄下,找到 libstdc++ -6.dll 檔案,将其放到要運作的代碼目錄下。
  1. 在 PATH 環境變量中除了 mingw 的 libstdc++ -6.dll ,其他的都删掉。
疑難雜症之vscode--During startup program exited with code 0xc0000139.--缺失重要檔案(雜記)問題展示解決方法:

最後我使用了第一種,然後事情就完美解決了

附上一段queue的簡單代碼作為調試

// CPP code to illustrate Queue in
// Standard Template Library (STL)
#include <iostream>
#include <queue>

using namespace std;

// Print the queue
void showq(queue<int> gq)
{
    queue<int> g = gq;
    while (!g.empty()) {
        cout << '\t' << g.front();
        g.pop();
    }
    cout << '\n';
}

// Driver Code
int main()
{
    queue<int> gquiz;
    gquiz.push(10);
    gquiz.push(20);
    gquiz.push(30);

    cout << "The queue gquiz is : ";
    showq(gquiz);

    cout << "\ngquiz.size() : " << gquiz.size();
    cout << "\ngquiz.front() : " << gquiz.front();
    cout << "\ngquiz.back() : " << gquiz.back();

    cout << "\ngquiz.pop() : ";
    gquiz.pop();
    showq(gquiz);

    return 0;
}
           
疑難雜症之vscode--During startup program exited with code 0xc0000139.--缺失重要檔案(雜記)問題展示解決方法:

噢~完美解決,感謝,撒花✿✿✿

記錄時間:2023年1月6日

一半油鹽以謀生,一半詩意來謀愛。這是今天看到的一句話,加油啊楊咩咩。