天天看點

記一次Windows MinGW g++編譯c++代碼

到這裡下載下傳GCC預編譯包:https://sourceforge.net/projects/mingw-w64/files

下載下傳這個:

記一次Windows MinGW g++編譯c++代碼

x86_64 是64位,i686 是32位的意思

posix 是跨平台的意思,win32 僅限Windows

尾綴是指生成的可執行程式和dll所運作的位數,sjlj可以運作在32位也可以運作在64位,seh僅限運作在64位,drawf僅限32位

解壓并配置環境變量

将其内

mingw/bin

目錄配到 PATH 環境變量下,使用指令

g++ -v

,得到版本資訊:

寫C++代碼

這裡用

stl

庫中的

vector

容器。

#include <iostream>
#include <vector>

int main(){
    vector<int> vec1(10, 4);    
    for (int i = 0; i< vec1.size(); i++){
        std::cout << vec1[i] << std::endl;
    }
    system("pause");
    return 0;
}
           

編譯

g++ .\hello.cpp -o hello
           

報失敗...

記一次Windows MinGW g++編譯c++代碼

排查原因,是因為

vector

類前要加

std::

#include <iostream>
#include <vector>

int main(){
    std::vector<int> vec1(10, 4);    
    for (int i = 0; i< vec1.size(); i++){
        std::cout << vec1[i] << std::endl;
    }
    system("pause");
    return 0;
}
           

然後編譯成功了,在

hello.cpp

同級别目錄下生成了

hello.exe

檔案

運作

輕按兩下運作,按理說應該出現10行4,然後等按任意鍵結束,但是報錯:

記一次Windows MinGW g++編譯c++代碼

排查原因,是因為一個動态連結庫有問題...

找到g++的動态連結庫

mingw/bin/libstdc++-6.dll

,放到

hello.exe

旁邊,正常運作:

記一次Windows MinGW g++編譯c++代碼