您的位置:首页 > 其它

Undefined symbols for architecture x86_64错误

2016-05-01 22:47 387 查看

Undefined symbols for architecture x86_64错误原因

错误提示

Undefined symbols for architecture x86_64:
“CreateMyThread(void ()(void), void*)”, referenced from:
_main in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

错误原因

在头文件中定义了inline函数,在cpp文件中实现

代码

MyThread.h:
inline ThreadID CreateThread(ThreadFunc p_func, void *p_param);

MyThread.cpp:

inline ThreadID CreateThread(ThreadFunc p_func, void *p_param) {
ThreadID t;
DummyData* data = new DummyData;
data->m_func = p_func;
data->m_data = p_param;
pthread_create(&t,0,DummyRun,data);
if( t== 0){
delete data;
}
return t;
}

错误解决

将inline函数放在头文件中

其它问题

void*转换成char
会提示error: cast from pointer to smaller type ‘char’ loses information;
因为指针类型的大小是根据操作系统的位数决定的,在64位系统里是8个字节,而char是4个字节。
不知道如何实现将空指针强制转化成字符型,尚待解决。

void PrintThread( void* data){
char c = (char)data;
for(int i = 0;i < 1000; i++){
cout << c;
cout.flush();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: