simples programa de threads C ++ não pode ser compilado

-1

O seguinte é o meu primeiro programa multi-threaded. Mas enquanto foi compilado, há um erro de vinculação. A parte da mensagem de erro:

std::thread::thread<void (&)(int), int&>(void (&)(int), int&):
test.cpp (.text._ZNSt6threadC2IRFviEJRiEEEOT_DpOT0_[_ZNSt6threadC5IRFviEJRiEEEOT_DpOT0_]+0x33): undefined reference pthread_create
collect2: error ld return 1
#include<thread>

void f(int i) {}

int main() {
        std::thread t(f, 1);
        t.join();
        return 0;
}
    
por Kafe Chang 15.03.2018 / 19:15

1 resposta

2

Você precisa compilar com -pthread como opção de compilação.

Eu obtive seu código para compilar com isso (embora eu tenha adicionado a função -Wall para me fornecer todos os avisos de aviso):

g++ -pthread -out foo.exe foo.cpp

(onde foo.cpp foi o nome do arquivo de entrada que eu usei contendo o seu código)

    
por Thomas Ward 15.03.2018 / 19:28