Есть ли в ваших заголовочных файлах pthread extern "C" { ... }
вокруг прототипов функций? Это обычный случай, когда компоновщик не может ссылаться в C ++.
Это происходит из-за того, что C ++ обычно выполняет распределение имен, чтобы он мог кодировать детали параметров в символы (допуская полиморфизм). Например, функции:
void x(int);
void x(void);
void x(char,int,float,double);
все получают разные символы компоновщика.
Если в заголовочных файлах нет extern "C" { ... }
, вам может потребоваться сделать это самостоятельно:
extern "C" {
#include <pthread.h>
}
Надеюсь, это сработает.