PCL1.7.2 in QT5.4.1 --- error: C2589, C2059, C2181 in PCL header file

PCL1.7.2 in QT5.4.1 --- error: C2589, C2059, C2181 in PCL header file

我试图将我朋友的代码包含到我的项目中。

原始代码高度使用 PCL 1.7.2 所以我,

1.Installed PCL 1.7.2 包(未使用源代码构建)

2.Edit INCLUDEPATH and LIBS in myproject.pro file, 根据我朋友在Visual Studio 2013的设置(是的,他在VS2013下写的代码)。例如 和上面一样的更多路径。

3.Include header 文件在 mainwindow.h

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv/cv.h>
#include <opencv/highgui.h>

#include <boost/shared_ptr.hpp>

#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <pcl/io/ply_io.h>
#include <pcl/io/pcd_io.h>

#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/surface/mls.h>

#include <pcl/filters/statistical_outlier_removal.h>
#include <pcl/filters/voxel_grid.h>

#include <pcl/registration/icp.h>
#include <pcl/filters/radius_outlier_removal.h>

#include <pcl/features/normal_3d.h>
#include <pcl/surface/gp3.h>

#include <cv.h>
#include <cxcore.h>

using namespace cv;
using namespace std;
using namespace pcl;

4.Build(编译)项目,出现一堆错误

错误是C2589、C2059和C2181,主要在PCLheader如io_operators.h、pcl_io.h、correspondence.h、[=37] =].我完全不知道这些,这是否意味着我必须编辑 PCL 的 header 文件?

这些错误代码通常与 Windows 问题有关 warning C4003 and errors C2589 and C2059 on: x = std::numeric_limits<int>::max();

io_operators.h:66pcl_io.h:281中确实有std::numeric_limits<>::max()

因此,如果这是唯一的问题,可以通过将 pcl header 移到顶部来更改 header 的顺序来解决,以避免包含 windows.h (可能包含在其他 header 中)之前或通过在所有包含之前定义 NOMINMAX