CUDA PCL boost错误解决方案

    xiaoxiao2022-07-13  187

    关于CUDA PCL boost库出现的错误解决办法

    问题描述问题分析解决方法

    转载自简书

    问题描述

    如果包含头文件:

    #include <pcl/io/pcd_io.h>

    则报错的大致内容包括:

    pcl/io/file_io.h(346): error: namespace "boost" has no member "iequals" pcl/io/pcd_io.h(485): error: name followed by "::" must be a class or namespace name

    问题分析

    在头文件pcl/io/boost.h中存在关于宏CUDACC的编译选项,而在使用pcd_io.h文件时,没有在此之前包含这些boost库的头文件。

    解决方法

    #ifndef __CUDACC__ //https://bugreports.qt-project.org/browse/QTBUG-22829 #ifndef Q_MOC_RUN #include <boost/version.hpp> #include <boost/numeric/conversion/cast.hpp> #include <boost/thread/mutex.hpp> #include <boost/thread/condition.hpp> #include <boost/thread.hpp> #include <boost/thread/thread.hpp> #include <boost/filesystem.hpp> #include <boost/bind.hpp> #include <boost/cstdint.hpp> #include <boost/function.hpp> #include <boost/tuple/tuple.hpp> #include <boost/shared_ptr.hpp> #include <boost/weak_ptr.hpp> #include <boost/mpl/fold.hpp> #include <boost/mpl/inherit.hpp> #include <boost/mpl/inherit_linearly.hpp> #include <boost/mpl/joint_view.hpp> #include <boost/mpl/transform.hpp> #include <boost/mpl/vector.hpp> #include <boost/algorithm/string.hpp> #ifndef Q_MOC_RUN #include <boost/date_time/posix_time/posix_time.hpp> #endif #if BOOST_VERSION >= 104700 #include <boost/chrono.hpp> #endif #include <boost/tokenizer.hpp> #include <boost/foreach.hpp> #include <boost/shared_array.hpp> #include <boost/interprocess/sync/file_lock.hpp> #if BOOST_VERSION >= 104900 #include <boost/interprocess/permissions.hpp> #endif #include <boost/iostreams/device/mapped_file.hpp> #define BOOST_PARAMETER_MAX_ARITY 7 #include <boost/signals2.hpp> #include <boost/signals2/slot.hpp> #endif #endif #include <pcl/io/pcl_io.h>

    重新编译,问题解决。

    最新回复(0)