开发环境: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 |
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 #include #include #include #include using namespace std; using namespace pcl; void viewerOneOff(visualization::PCLVisualizer& viewer) { viewer.setBackgroundColor(0, 0, 0); //设置背景颜色为黑色 } int main() { 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; } |
运行结果:
备注:运行过程中要将存有头文件和点云数据的.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