在开发c及cpp的多并发程序时,常常会用到pthread.h头文件,但是pthread是需要自行安装的,下面就是在Windows平台使用Visual Studio安装pthread的教程。
1.下载并解压pthread库
在POSIX Threads for Windows - Browse Files at SourceForge.net网站中选择w32-release压缩包下载。下载后完成后只需解压rebuilt文件夹,并记下该文件夹的位置,接下来会用到。
2.在Visual Studio中配置pthread
右键需要pthread的项目,选择最下方的“属性”;
左侧栏选择“VC++目录”,在右侧栏的“包含目录”中添加解压出的rebuilt文件夹中的include\x86目录位置(如果你的程序是64位那应该是x64目录而不是x86);
在右侧栏的“库目录”中添加解压出的rebuilt文件夹中lib文件夹的目录位置;
左侧栏选择“链接器”、“输入”,在右侧“附加依赖项”中添加pthreadVC2.lib;
点击“确定”,配置成功。此时发现可以正常引入pthread头文件了。
3.解决“timespec”:“struct”类型重定义
当我们开始调试程序时,会遇到该报错,原因是timespec重名了。
解决方法很简单,右键项目名称,选择“属性”,左侧栏中点击“C/C++”,选择“预处理器”,在右侧栏的“预处理器定义”中添加“HAVE_STRUCT_TIMESPEC”,点击“确定”。
4.解决“无法解析的外部符号”错误
打开rebuilt文件夹的include\pthread.h头文件,然后在“#define PTHREAD_H”语句下添加一行代码“#pragma comment(lib,"pthreadVC2.lib")”,保存退出。
5.解决“应用程序无法正常启动”
此时我们的代码在调试时可以通过编译,但是当命令行窗口打开后就会弹出窗口提示“应用程序无法正常启动”,出现的原因是应用程序找不到pthread的dll文件,解决方法如下:
在rebuilt文件夹下打开dll文件夹,将x64文件夹下的两个dll文件粘贴到C:\Windows\System32目录下;将x86文件夹下的五个dll文件粘贴到C:\Windows\SysWOW64目录下。
此时就可以在调试时正常打开命令行窗口了。