VS 2019配置多线程pthread库

下载库文件

在学习c++过程中,c++多线程一般需要用到pthread多线程库,这是一般是假设我们使用的是 Linux 操作系统,编译工具是gcc的情况下,但是大多数情况咱们开发的操作系统是Windows,编译工具是Visual Studio。本文章的基础环境是win10,VS 2019。

先去下载pthread库

ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip

解压后会看到有三个文件夹
在这里插入图片描述

VS 2019配置

我们的测试程序来自菜鸟教程的C++多线程教程
,创好项目后引入pthread的头文件会报找不到的错误。
在这里插入图片描述

去项目NuGet程序包里下载这个库

在这里插入图片描述

到浏览中搜索安装

在这里插入图片描述

安装完后运行程序会遇到第一个错误 C2011 “timespec”:“struct”类型重定义

在这里插入图片描述

到pthread.h头文件里,在

#if !defined( PTHREAD_H )
#define PTHREAD_H

下面加#define HAVE_STRUCT_TIMESPEC

在这里插入图片描述

再次运行,此时会出现两个新的错误

  • 错误 LNK2019 无法解析的外部符号 __imp__pthread_create
  • 错误 LNK2019 无法解析的外部符号 __imp__pthread_exit

在这里插入图片描述

这时需要我们回到pthread.h头文件里,任意位置上加上

#pragma comment(lib,"pthreadVC2.lib")

在这里插入图片描述

再运行程序报
错误 LNK1104 无法打开文件“pthreadVC2.lib”

在这里插入图片描述

感觉离希望越来越近了,错误说无法打开“pthreadVC2.lib”,咱们把上面下载好的Pre-built.2/lib/x86(选x86还是x64文件夹视你的编译器平台而定)里的找到pthreadVC2.lib

在这里插入图片描述

把pthreadVC2.lib放到程序根目录下,就是和你的代码放到同一级目录上

在这里插入图片描述

再运行程序,这次终于弹出黑框框了,但是会提醒我们系统里缺少pthreadVC2.dll

在这里插入图片描述

这时需要将dll库放入Windows系统库文件中

  1. 打开Pre-built.2下dll文件夹,有两个不同平台的dll,把x64下的文件放到C:\Windows\System32\下
  2. 把x86文件夹放到SysWOW64\下

据说之所以把x64的放32位下,x86的放64位下,是为了让64位机能运行32位的程序

最后一次运行程序,成功运行!
在这里插入图片描述

参考博客

如何在Visual Studio中配置pthread多线程库

  • 50
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
要在Visual Studio 2019配置pthread多线程支持,可以按照以下步骤进行: 1. 首先,从https://sourceforge.net/projects/pthreads4w/files/pthreads-w32/下载最新版本的pthread,或者从百度网盘获取。 2. 将下载好的pthread解压到一个路径下,例如C:\pthread。 3. 在Visual Studio 2019中创建一个新的控制台应用程序项目。 4. 点击“项目”菜单,选择“属性”。 5. 在属性页中,选择“VC++目录”选项卡,在“包含目录”中添加pthread.h的所在目录,例如C:\pthread\Pre-built.2\include。 6. 在“目录”中添加pthreadlib文件所在目录,例如C:\pthread\Pre-built.2\lib\x64和C:\pthread\Pre-built.2\lib\x86。 7. 在“链接器”选项卡中,选择“输入”选项卡,在“附加依赖项”中加入pthreadVC2.lib和pthreadVCE2.lib。 8. 在代码中添加头文件#include <pthread.h>。 现在,你可以编写多线程代码并使用pthread了。例如,你可以使用以下代码来创建一个线程并打印一条消息: #include <iostream> #include <pthread.h> using namespace std; void* func(void* arg) { cout << "Hello from thread!" << endl; pthread_exit(NULL); } int main() { pthread_t thread; int rc = pthread_create(&thread, NULL, func, NULL); if (rc) { cout << "Error: unable to create thread," << rc << endl; return -1; } pthread_join(thread, NULL); return 0; } 这样,你就成功配置了pthread多线程支持。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [vs2019 C++配置多线程pthread](https://blog.csdn.net/weixin_44770969/article/details/129389356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [VS 2019配置多线程pthread - 及自我解析](https://blog.csdn.net/wu_zhiyuan/article/details/116306158)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值