gpt4 book ai didi

pthreads - mingw 中的 libpthread 找不到库

转载 作者:行者123 更新时间:2023-12-01 23:01:17 37 4
gpt4 key购买 nike

我正在尝试使用 mingw 编译以下程序:

#include <pthread.h>
#include <errno.h>
#include <unistd.h>
#include <iostream>
#include <cstdio>

void *hello(void *id) {
int nid = *static_cast<int*>(id);
std::printf("Hello from thread %d\n", nid);
return 0;
}

int main(int argc, char **argv) {
pthread_t ids[2];
int *params[2];
for (int i = 0; i < 2; ++i) {
params[i] = new int;
*params[i] = i;
pthread_create(&ids[i], 0, hello, params[i]);
}
for (int i = 0; i < 2; ++i)
pthread_join(ids[i], 0);
for (int i = 0; i < 2; ++i)
delete params[i];
return 0;
}

使用这个命令:
g++ -lpthread -ohello.exe hello.cc

我收到以下消息:
C:\Users\XXXXXX~1\AppData\Local\Temp\cczPlv0w.o:hello.cc:(.text+0xad): undefined 
reference to `_imp__pthread_create'
C:\Users\XXXXXX~1\AppData\Local\Temp\cczPlv0w.o:hello.cc:(.text+0xe9): undefined
reference to `_imp__pthread_join'
collect2: ld returned 1 exit status

但是使用旧版本的 MingGW,我在运行 pthreads 程序时没有问题。 (这只是所有失败的程序中最简单的,但基本上所有使用 pthread 的程序最终都会出现相同的错误,C 和 C++)

最佳答案

搬家 -lpthread到该命令的末尾:

g++ -ohello.exe hello.cc -lpthread

参数的顺序很重要。 (实际上建议使用 -pthread 而不是 -lpthread 进行链接,因为它为预处理器和链接器设置了标志。)

关于pthreads - mingw 中的 libpthread 找不到库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6482658/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com