我不能在窗口平台中使用pthread
-
21-12-2019 - |
题
我的env是windows8.1(64bit)和使用Visual Studio 2010。
我确实把所有* .dll文件放在system32中,syswow64(因为我使用win8 64bit。)
和链接位置,其中* .lib文件为x64-system的vc 2010。
当然,我添加了其他文件夹lib _ ..,包括文件夹..等..
但是当我尝试编译“pthread使用”项目时,发生了致命错误。
-source
#include<pthread.h>
#include<stdio.h>
int doit_id,trd_id;
pthread_t trd;
void *doit(void *data){
doit_id = (int)data;
return 0;
}
int main(){
trd_id=pthread_create(&trd,NULL,doit,0);
return (0);
}
.
-error
1.obj : error LNK2019: unresolved external symbol __imp__pthread_create (referenced in function _main)
C:\Users\~program Location~ : fatal error LNK1120: 1 unresolved externals
.
请帮我
解决方案
main()
正在寻找名称的事实,因此属于您为32位目标构建项目。
64位win32 pthread库具有for __imp__pthread_create
的导入符号,名称:
__imp_pthread_create
.
32位win32 pthread libary有:
__imp__pthread_create
.
注意32位lib中的额外下划线 - 与您的pthread_create()
正在寻找的名称约定相匹配,因此您是您为32位目标构建的指示。额外的下划线是X86在Win32 Pthread库使用的CDECL调用惯例中构建处理名称的一部分。x64不使用CDECL调用约定(X64只有单个调用约定),下划线不会向x64构建中添加到符号中。
我认为您需要下载或构建32位pthread库或更改项目配置以构建64位目标。
不隶属于 StackOverflow