PCL常見的編譯錯誤

(1)error c4996: 'fopen': This function or variable may be unsafe

       解決方法:項目->屬性->配置屬性->C/C++ -> 預處理器 -> 預處理器定義,增加: _CRT_SECURE_NO_DEPRECATE。

       參考博文:https://blog.csdn.net/wangyang20170901/article/details/78810068

(2)...\flann\algorithms\dist.h(523): error C3861: “pop_t”: 找不到標識符

       解決方法:雙擊該行輸出直接打開dist.h頭文件;將第503行的typedef unsigned long long pop_t;移動到第480行前面。

       參考博文:https://blog.csdn.net/weixin_41991128/article/details/83864713

(3)boost\typeof\msvc\typeof_impl.hpp(125): error C2988: 不可識別的模板聲明/定義

       解決方法:可以代碼的源文件最開頭的位置加上對BOOST_TYPEOF_EMULATION的定義:  

#define BOOST_TYPEOF_EMULATION
#include <pcl\registration\icp.h>

       參考博文:https://blog.csdn.net/qq_39031960/article/details/83544928

(4)error C4996: 'pcl::SAC_SAMPLE_SIZE': This map is deprecated and is kept only to prevent breaking existing user code. Starting from PCL 1.8.0 model sample size is a protected member of the SampleConsensusModel class。

       解決方法:打開項目屬性頁>C/C++>常規>SDL檢查(設置爲否)。 

       參考博文:https://blog.csdn.net/qing101hua/article/details/70739391

(5)Failed to find match for field 'rgba'.(例子5-1)

       解決方法:用word打開pcd文件查看的類型,發現 Fields不包含RGBA。將PCL::PointXYZRGBA修改爲pcl::PointXYZ。

(6) Error:no override found for 'vtkPolyDataMapper'(例子5-1)

       解決方法:在源文件的開頭加上:

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL);
VTK_MODULE_INIT(vtkInteractionStyle);

       參考博文:https://blog.csdn.net/zzh_AI/article/details/88861221

(7) error C2039: “camera_”: 不是“pcl::visualization::PCLVisualizer”的成員(例5-2)

       解決方法:最新的pcl已經沒有camera_成員了。所以需要替換爲:

viewer.camera_.pos[0] = pos_vector[0];
viewer.camera_.pos[1] = pos_vector[1];
viewer.camera_.pos[2] = pos_vector[2];
viewer.camera_.focal[0] = look_at_vector[0];
viewer.camera_.focal[1] = look_at_vector[1];
viewer.camera_.focal[2] = look_at_vector[2];
viewer.camera_.view[0] = up_vector[0];
viewer.camera_.view[1] = up_vector[1];
viewer.camera_.view[2] = up_vector[2];
/***將以上的代碼替換爲以下函數*****/
viewer.setCameraPosition(pos_vector[0], pos_vector[1], pos_vector[2],
		look_at_vector[0], look_at_vector[1], look_at_vector[2],
		up_vector[0], up_vector[1], up_vector[2]);

       參考博文:https://www.cnblogs.com/li-yao7758258/p/6444207.html

(8)range_image_visualization.cpp(129): error C3861: “sleep”: 找不到標識符(pcl_sleep識別不了。例5-2)

       解決方法:定位到pcl_sleep的頭文件pcl_macros.h,修改pcl_sleep的宏定義sleep(x) 爲Sleep(x),【首字母大寫】

       參考博文:https://blog.csdn.net/m0_37906001/article/details/97785515

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章