我在pthread.h
文件中使用*.cc
。当我尝试使用pthread_exit(0);
或pthread_join(mythrds[yy],NULL);
时,它会说:
.cc:(.text+0x3e): undefined reference to `pthread_exit'
当使用gcc在*.c
文件中编写非常相似的代码时,它可以完美运行。我怎样才能在c ++中使用pthread ..(我还添加了-lpthread)
..
void *myThreads ( void *ptr )
{
...
pthread_exit(0);
}
..
国旗:
g++ -lpthread -Wall -static -W -O9 -funroll-all-loops -finline -ffast-math
答案 0 :(得分:27)
您可以尝试使用-pthread选项来使用g ++。
-pthread
Adds support for multithreading with the pthreads library. This
option sets flags for both the preprocessor and linker.
答案 1 :(得分:1)
你的pthread头文件是否在函数原型周围有extern "C" { ... }
?这是链接器无法在C ++中链接的常见情况。
之所以发生这种情况是因为C ++通常会进行名称修改,以便它可以将参数详细信息编码为符号(允许多态)。例如,函数:
void x(int);
void x(void);
void x(char,int,float,double);
都获得不同的链接符号。
如果头文件不有extern "C" { ... }
,您可能需要自己动手:
extern "C" {
#include <pthread.h>
}
希望这会奏效。