说明
在VS里用MS编译器不能直接调用pthread库,需要先自行下载该库:http://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip
解压后用的到的只有Pre-built.2
文件夹下的文件。
配置
如下图分别配置三大项:
- 包含目录-->...pthreads-w32-2-9-1-release\Pre-built.2\include
- 库目录-->...pthreads-w32-2-9-1-release\Pre-built.2\lib\x86
- 附加依赖项-->pthreadVC2.lib
解决报错
(1) 如果代码运行报错:“timespec”;”struct”类型重定义。解决方法:在pthread.h在第35行加入如下代码:
#define HAVE_STRUCT_TIMESPEC
或者在项目属性->CC++->预处理器->预处理器定义添加HAVE_STRUCT_TIMESPEC
。
(2) 如果代码运行报错:找不到pthreadVC2.dll。解决方法:将pthreadVC2.dll拷贝到项目的Debug目录下
或者 打开Pre-built.2下dll文件夹,有两个不同平台的dll,把x64下的文件放到C:\Windows\System32\下, 把x86文件夹放到C:\Windows\SysWOW64\下。
测试代码
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>//使用多线程时需要添加<pthread.h>这个头文件
#include <Windows.h>
void* pFunc(void* arg)
{
int m = 1;
while (1)
{
printf("线程 --- m: %d\n", m++);
Sleep(1000);
}
}
int main()
{
int n = 1;
//创建一个线程
pthread_t pid;
pthread_create(&pid, NULL, pFunc, NULL);
while (1)
{
printf("主函数 --- n: %d\n", n++);
Sleep(1000);
}
return 0;
}
运行结果:
标签:Pre,pthreads,C++,dll,线程,pthread,include From: https://www.cnblogs.com/zhuchunlin/p/17375026.html