【转载】window下配置pthread的方法及出现问题的解决方法

点点圈 提交于 2020-11-26 04:12:02

POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。Windows操作系统也有其移植版pthreads-win32。

转载连接:https://blog.csdn.net/cry1994/article/details/79115394

下载源码

源码主页:https://sourceware.org/pthreads-win32/
ftp地址:ftp://sourceware.org/pub/pthreads-win32

下载最新版本pthreads-w32-2-9-1-release.zip解压得到三个文件夹

Pre-built.2

Pre-build.2 里面包含了pthreads for win32 的头文件和库文件;

pthreads.2

pthreads.2 里面包含了pthreads 的源代码;

QueueUserAPCEx

QueueUserAPCEx 里面是一个alert的driver,编译需要DDK 。Windows Device Driver Kit (NTDDK.h) 需要额外单独安装。

直接使用or编译源码

1.直接使用

Pre-built.2这个文件夹下有三个文件夹
dll 动态链接库
include 头文件
lib 静态链接库

1.1配置头文件

把include文件夹下的头文件拷贝到vs2017安装目录下

D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\

1.2配置静态链接库

把lib文件夹下的静态库文件拷贝到vs2017安装目录下

D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\lib

1.3配置动态链接库

Pre-built.2\dll\x86下的文件拷贝到C:\Windows\SysWOW64目录下
Pre-built.2\dll\x64下的文件拷贝到C:\Windows\System32目录下

测试

#include <pthread.h>
#pragma comment(lib,"pthreadVC2.lib")
int main()
{
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

编译错误C2011 “timespec”:“struct”类型重定义

可修改pthread.h文件,在
#if !defined( PTHREAD_H )
#define PTHREAD_H
下面加上一行宏定义
#define HAVE_STRUCT_TIMESPEC
可以解决“timespec”:“struct”类型重定义错误
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

至此,已经可以在VS2017中使用。如果不想改动到VS2017的目录和系统目录,可以通过配置工程项目属性,设置附加包含目录/链接器附加依赖库等选项,从而达到使用pthread库的目的。

2.编译pthread源码

暂时懒得研究。就酱,用着先。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!