如图:
在使用pcl_sleep函数时出现错误提示。
解决方法:
① 查找是否包含头文件#include <pcl/pcl_macros.h>
② 打开pcl_macros.h头文件,寻找到 sleep,将其修改为Sleep;
头文件中的初始代码:
#ifdef WIN32
#define pcl_sleep(x) Sleep(1000*(x))
#else
#define pcl_sleep(x) sleep(x)
#endif
改成:
#ifdef WIN32
#define pcl_sleep(x) Sleep(1000*(x))
#else
#define pcl_sleep(x) Sleep(x)
#endif
其实并不是pcl中的源码出错了,上面的解决办法是简单粗暴的。
根据博文【C/C++】Sleep函数的用法:
Sleep函数
功能: 执行挂起一段时间,也就是等待一段时间在继续执行
用法:Sleep(时间)
头文件:
- Windows下为--> windows.h
- Linux 下为 --> unistd.h
注意:
- Sleep是区分大小写的,有的编译器是大写,有的是小写。
- Sleep括号里的时间,在windows下是以毫秒为单位,而Linux是以秒为单位
再回到pcl中的源码:
#ifdef WIN32
#define pcl_sleep(x) Sleep(1000*(x))
#else
#define pcl_sleep(x) sleep(x)
#endif
可以看见,当编译环境是32位时,使用的是大写的Sleep,并且传入的是毫秒,在其他环境中,则使用的是小写,传入的是时间是以秒为单位。
而我使用的开发环境为Win10+VS2017+Win64,被当成其他开发环境了,所以正确的改法应该是再添加一个判断条件:
#ifdef WIN32
#define pcl_sleep(x) Sleep(1000*(x))
#elif _WIN64
#define pcl_sleep(x) Sleep(1000*(x))
#else
#define pcl_sleep(x) sleep(x)
#endif
或者也可以将编译环境改成Win32。