C/C++ 学习日记2:使用多线程以及它的头文件pthread.h时所遇到的一些麻烦

每每遇到bug,这意味着,要么几分钟内解决,要么耗费大量的时间和精力才能搞定

我将使用多线程时遇到的这些问题,以及解决方案总结了一下,借此提醒自己。

1.怎么使用多线程?

引用头文件pthread.h,然后可以使用多线程方面的功能了。详见MSDN或者自行百度

2.VS提示找不到pthread.h?

之前有人公布过解决办法,这里贴上链接:点我跳转

3.VS提示:编译错误C2011 “timespec”:“struct”类型重定义

还是那个链接,在文章最下面。点我跳转

4.VS提示:编译错误C2011 “timespec”:“struct”类型重定义

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

5. 运行的时候提示:无法启动此程序,因为计算机中丢失pthreadVC2.dll

可以把pthread的文件解压缩后,把Pre-built.2文件夹中的pthreadVC2.dll复制后放到C:\Windows\SysWOW64中(64位系统)

6.VS运行的时候提示:错误 1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用

此时需要在代码中加入
#pragma comment(lib, "pthreadVC2.lib")

这里附上成功运行多线程的截图:创建线程并让它负责响应热键事件。没有多线程,它可能都没办法一边运行程序一边监视热键,经测试,可以直接静态编译。
这里写图片描述

对了,使用多线程完毕之后,别忘了使用关闭多线程的代码啊。

猜你喜欢

转载自blog.csdn.net/weixin_42950931/article/details/81676157
今日推荐