我的环境是 Windows 8.1(64 位)并使用 Visual Studio 2010。
我确实将所有 *.dll 文件放在 system32 、 SYSWOW64 中(因为我使用 win8 64 位。)
并将 x64 系统的 *.lib 文件与 VC 2010 的链接位置。
当然,我添加了额外的文件夹 lib forders.. 、 include 文件夹.. 等。
但是当我尝试编译“pthread-used”项目时,发生了致命错误。
-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()
正在寻找名字__imp__pthread_create
表示您正在为 32 位目标构建项目。
64 位 Win32 pthread 库有一个导入符号pthread_create()
名称:
__imp_pthread_create
32 位 Win32 pthread 库具有:
__imp__pthread_create
请注意 32 位库中的额外下划线 - 它与您的名称约定相匹配main()
正在寻找,因此这表明您正在为 32 位目标构建。额外的下划线是 x86 如何在 Win32 pthread 库使用的 cdecl 调用约定中构建处理名称的一部分。 x64 不使用 cdecl 调用约定(x64 只有一个调用约定),并且在 x64 版本中不会在符号前面添加下划线。
我认为您需要下载或构建 32 位 pthread 库,或者更改项目配置以构建 64 位目标。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)