PCL环境配置+斯坦福兔子测试程序

开发环境:windows10+VisualStudio2017+PCL-1.8.1-AllInOne-msvc2017-win64.exe+pcl-1.8.1-pdb-msvc2017-win64.zip

 

除了下载相关库文件还要进行环境变量配置,对新建项目配置相应的包含目录等等。

相关博客链接: PCL环境配置 https://blog.csdn.net/qq_32408773/article/details/82961178

 

配置完后,出现以下问题:

严重性

代码

说明

项目

文件

禁止显示状态

错误

C1083

无法打开包括文件: “pcl/isualization/cloud_viewer.h”: No such file or directory

ConsoleApplication2

e:\pcl\consoleapplication2\consoleapplication2\consoleapplication2.cpp

2

 

解决方法:https://www.cnblogs.com/haoyul/p/6691088.html

没有包含头文件的目录文件,或者绝对路径/相对路径错误。 这个问题是因为在设置include,即设置附加包含目录,路径不对或缺少导致的,根据提示,找到对应错误的库的头文件路径,更该即可。

最后在文件管理器中找到头文件所在的文件夹,修改了包括目录中的路径,从而解决问题。

 

编程中头文件问题:<> 从系统环境变量指定的目录去搜索你的头文件, 而""首先从当期目录搜索你的头文件,当找不到时才去统环境变量指定的目录搜索。

严重性

代码

说明

项目

文件

禁止显示状态

警告

C4819

该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

ConsoleApplication2

d:\pcl\pcl 1.8.1\include\pcl-1.8\pcl\visualization\interactor_style.h

1

 

解决方法:VisualStudio中隐藏了高级保存选项,在工具自定义中添加高级保存控件。将相应的头文件保存为Unicode格式。

严重性

代码

说明

项目

文件

禁止显示状态

警告

C4102

“std”: 未引用的标签

ConsoleApplication2

e:\pcl\consoleapplication2\consoleapplication2\consoleapplication2.cpp

48

 

 

严重性

代码

说明

项目

文件

禁止显示状态

错误

C4996

'std::uninitialized_copy::_Unchecked_iterators::_Deprecate': Call to 'std::uninitialized_copy' with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'

ConsoleApplication2

d:\visual studio2017(community)\vc\tools\msvc\14.13.26128\include\memory

53

 

问题翻译:'std::uninitialized_copy::_Unchecked_iterators::_Deprecate':调用'std::uninitialized_copy',参数可能不安全——这个调用依赖于调用者检查传递的值是否正确。要禁用此警告,请使用-D_SCL_SECURE_NO_WARNINGS。参见有关如何使用Visual c++“已检查迭代器”的文档。

解决方法:将_SCL_SECURE_NO_WARNINGS 标记加入项目属性,在C/C++预处理器中添加此

 

 

VS2017提示PCH警告,未生成IntelliSense PCH文件

解决办法:

在VS2017中依次单击:工具–选项–文本编辑器–C/C++–高级–禁用 IntelliSence,将“false”改为“true”。

严重性

代码

说明

项目

文件

禁止显示状态

错误

LNK1104

无法打开文件“vtknetcdf_c++_gd.lib”

ConsoleApplication2

E:\PCL\ConsoleApplication2\ConsoleApplication2\LINK

1

 

解决方法:是附加库目录中,路径不对或缺少导致的,根据提示,修改对应的路径即可。

注意:如果设置了,还是提示找不到头文件或lib,这时就要查看一下PCL的安装路径下有没有这个头文件或lib,如果有,说明你的路径设置的还是有问题,如果搜索不到这个头文件,那就要修改代码,可能是版本原因导致这个头文件没了,如果搜索不到lib文件,那么把这个lib从附加依赖项里删除。

    我在项目中的问题是,lib名称格式有误,在文件下找到后修改相应链接器的附加依赖项。

严重性

代码

说明

项目

文件

禁止显示状态

错误

LNK1112

模块计算机类型“x64”与目标计算机类型“x86”冲突

ConsoleApplication2

E:\PCL\ConsoleApplication2\ConsoleApplication2\vtkInteractionStyle-8.0-gd.lib(vtkInteractionStyleObjectFactory.obj)

1

 

解决方法:

“模块计算机类型“x64”与目标计算机类型“X86”冲突解决方案 https://blog.csdn.net/u014805066/article/details/78143091

严重性

代码

说明

项目

文件

禁止显示状态

错误

LNK2019

无法解析的外部符号 "void __cdecl pcl::console::print(enum pcl::console::VERBOSITY_LEVEL,char const *,...)" (?print@console@pcl@@YAXW4VERBOSITY_LEVEL@12@PEBDZZ),该符号在函数 "public: void __cdecl pcl::detail::FieldMapper::operator()(void)" (??$?RUx@fields@pcl@@@?$FieldMapper@UPointXYZ@pcl@@@detail@pcl@@QEAAXXZ) 中被引用

ConsoleApplication2

E:\PCL\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2.obj

1

 

解决方法:

“error LNK2019: 无法解析的外部符号”的几种可能原因 https://blog.csdn.net/shenziheng1/article/details/54588457

 

程序无法启动,vs2017 被调用的对象已与其客户端断开连接。

解决方法:重启VS。

 

在运行过程中无法打开PDB文件。

解决方法:vs2017无法查找或打开 PDB 文件。https://blog.csdn.net/weixin_42731241/article/details/83070612

 

 

测试程序:斯坦福兔子

程序代码:

 

#include"stdafx.h"

#include

#include//标准C++库中的输入输出类相关头文件。

#include

#include//pcd 读写类相关的头文件。

#include

#include //PCL中支持的点类型头文件。

using namespace std;

using namespace pcl;

void viewerOneOff(visualization::PCLVisualizer& viewer) {

       viewer.setBackgroundColor(0, 0, 0);   //设置背景颜色为黑色

}

int main() {

       PointCloud::Ptr cloud(new PointCloud);

       char strfilepath[256] = "rabbit.pcd";

       if (-1 == io::loadPCDFile(strfilepath, *cloud)) {

              cout << "error input!" << endl;

              return -1;

       }

       cout << cloud->points.size() << endl;

       visualization::CloudViewer viewer("Cloud Viewer: Rabbit");     //创建viewer对象

       viewer.showCloud(cloud);

       viewer.runOnVisualizationThreadOnce(viewerOneOff);

       system("pause");

       return 0;

}

 

运行结果:

PCL环境配置+斯坦福兔子测试程序_第1张图片

 

备注:运行过程中要将存有头文件和点云数据的.pcb文件放在项目文件夹下。

 

 

参考博客:

【1】VS2017安装PCL1.8.1  https://www.cnblogs.com/li-yao7758258/p/8066352.html

【2】PCD文件格式详解及在PCL下读取PCD文件 https://blog.csdn.net/BaiYu_King/article/details/81782789

【3】从PCD文件中读取点云数据 https://blog.csdn.net/qq_41324346/article/details/80938574

【4】PCL 显示一只小白兔和Eigen矩阵 https://blog.csdn.net/moonlightpeng/article/details/81604109

你可能感兴趣的:(PCL,PointCloud)