Я использую pthread.h
в a *.cc
файл. когда я пытаюсь использовать pthread_exit(0);
или pthread_join(mythrds[yy],NULL);
это говорит:
.cc:(.text+0x3e): undefined reference to `pthread_exit'
при соответствии очень похожий код в a *.c
файл с gcc это работает прекрасное. Как я могу использовать pthread's в C++.. (Я также добавил-lpthread),
..
void *myThreads ( void *ptr )
{
...
pthread_exit(0);
}
..
флаги:
g++ -lpthread -Wall -static -W -O9 -funroll-all-loops -finline -ffast-math
Вы можете попробовать использовать параметр -pthread для g ++.
-pthread
Adds support for multithreading with the pthreads library. This
option sets flags for both the preprocessor and linker.
Имеются ли в ваших файлах заголовков pthread extern "C" {...}
вокруг прототипов функций? Это обычный случай, когда компоновщик не может ссылаться на C ++.
Это происходит потому, что C ++ обычно изменяет имена, чтобы можно было кодировать детали параметров в символы (допуская полиморфизм). Например, функции:
void x(int);
void x(void);
void x(char,int,float,double);
получают разные символы компоновщика.
Если файлы заголовков не имеют extern «C» {...}
, вам, возможно, придется сделать это самостоятельно:
extern "C" {
#include <pthread.h>
}
Надеюсь, это сработает.