赞
踩
如图:
在使用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。
---------------------
作者:罗三泡泡
来源:CSDN
原文:https://blog.csdn.net/luolaihua2018/article/details/117412419
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。