当前位置: 技术问答>linux和unix
c++程序中使用pthread编译不过,请教大家?????
来源: 互联网 发布时间:2015-05-27
本文导语: g++ -o Myfile -lpthread pthread_create(&pThead,NULL,MyThread,NULL)函数出错,显示第三个参数类型转化错误。 但是在gcc编译时正常。 | 不能用成员函数 | gcc缺省是按照c语言编译 而g++是按照c++编译 ...
g++ -o Myfile -lpthread
pthread_create(&pThead,NULL,MyThread,NULL)函数出错,显示第三个参数类型转化错误。
但是在gcc编译时正常。
pthread_create(&pThead,NULL,MyThread,NULL)函数出错,显示第三个参数类型转化错误。
但是在gcc编译时正常。
|
不能用成员函数
|
gcc缺省是按照c语言编译
而g++是按照c++编译
而g++是按照c++编译
|
void *MyThread( void *arg )
你的MyThread函数是这样定义的吗。
你的MyThread函数是这样定义的吗。
|
应该是原型问题。按yuanlei1978113(小石头)说的查。
|
#ifdef __cplusplus
extern "C" {
#endif
void *MyThread( void *arg );
#ifdef __cplusplus
}
#endif
extern "C" {
#endif
void *MyThread( void *arg );
#ifdef __cplusplus
}
#endif
|
可能是名字空间的问题,贴段代码看看。
|
不能用成员函数,必须是静态成员函数或者全局函数。
|
类型不匹配,用强制转化试试。
|
#ifdef __cplusplus
extern "C" {
#endif
void *MyThread( void *arg );
#ifdef __cplusplus
}
#endif
改成
void *MyThread( void *arg );
extern "C" {
#endif
void *MyThread( void *arg );
#ifdef __cplusplus
}
#endif
改成
void *MyThread( void *arg );