vs2017c语言pthreads的用法,Win10+VS2017配置pthread

阳光穿透心脏的1/2处 2023-01-22 14:47 328阅读 0赞

1、下载pthreads-w32-2-9-1-release.zip完毕后,解压,内容如下

c618c64fb11c45ba6c197d3c14f5a8e2.png

其中,【Pre-built.2】是pthreads for win32的头文件和库文件,【pthreads.2】是源代码,【QueueUserAPCEx】是一个驱动,需要WDK支持编译。

2、将【.pthreads-w32-2-9-1-releasePre-built.2include】目录下的头文件拷贝到VS2017的安装目录,当前环境下是【C:Program Files (x86)Microsoft Visual Studio2017EnterpriseVCToolsMSVC14.16.27023include

8a9b6b42b6c83c5f29eb32e2a4790511.png

3、把【.pthreads-w32-2-9-1-releasePre-built.2lib】下的静态库文件拷贝到VS2017的安装目录,当前环境下是【C:Program Files (x86)Microsoft Visual Studio2017EnterpriseVCToolsMSVC14.16.27023lib】,x86和x64对

6fdf6a25c76df2b36318c19b1797b67b.png

4、把【.pthreads-w32-2-9-1-releasePre-built.2dll】下的动态库文件拷贝到系统目录下,x86文件对应C:WindowsSysWOW64目录,x64文件对应C:WindowsSystem32目录

7dedd06d59f88abe80a164bc88d5b937.png

也可以在某个项目中引用该库,或者用更加时髦的Nuget也可以找到这个库。

配置好后,可用以下代码进行测试:

1 #include “pch.h”

2 #include

3 #include

4 #include

5 #include

6

7 #pragma comment(lib,”x86/pthreadVC2.lib”)

8

9 void* Function_t(void*Param)10 {11 std::cout << “多线程” <<:endl pthread_t myid=”pthread_self();13” std::cout myid.x returnnull>

17 intmain(int argc, const char *argv[])18 {19 pthread_t pid;20 pthread_attr_t attr;21 pthread_attr_init(&attr);22 pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS);23 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);24 pthread_create(&pid, &attr, Function_t, NULL);25 std::cout << “========================================” <<:endl getchar pthread_attr_destroy return>

如果在编译时报错【C2011 “timespec”:“struct”类型重定义】,原因是【pthread.h 中的 timespec 和 time.h 中的结构定义重复了,同时两个头文件中的编译条件不同,造成了结构的重复定义】,

解决方案:

#if !defined( PTHREAD_H )

#define PTHREAD_H

下面加上

#define HAVE_STRUCT_TIMESPEC

发表评论

表情:
评论列表 (有 0 条评论,328人围观)

还没有评论,来说两句吧...

相关阅读