VS2019 PCL12.0 Eigen::internal::aligned_free bug

VS2019 PCL12.0 Eigen::internal::aligned_free bug
摘要由CSDN通过智能技术生成

问题描述:

随便跑了一段程序

PointCloud<PointNormal>::Ptr subsampleAndCalculateNormals(const PointCloud<PointXYZ>::Ptr& cloud)
{
    PointCloud<PointXYZ>::Ptr cloud_subsampled(new PointCloud<PointXYZ>());
    VoxelGrid<PointXYZ> subsampling_filter;
    subsampling_filter.setInputCloud(cloud);
    subsampling_filter.setLeafSize(subsampling_leaf_size);
    subsampling_filter.filter(*cloud_subsampled);

    PointCloud<Normal>::Ptr cloud_subsampled_normals(new PointCloud<Normal>());
    NormalEstimation<PointXYZ, Normal> normal_estimation_filter;
    normal_estimation_filter.setInputCloud(cloud_subsampled);
    search::KdTree<PointXYZ>::Ptr search_tree(new search::KdTree<PointXYZ>);
    normal_estimation_filter.setSearchMethod(search_tree);
    normal_estimation_filter.setRadiusSearch(normal_estimation_search_radius);
    normal_estimation_filter.compute(*cloud_subsampled_normals);

    PointCloud<PointNormal>::Ptr cloud_subsampled_with_normals(
        new PointCloud<PointNormal>());
    concatenateFields(
        *cloud_subsampled, *cloud_subsampled_normals, *cloud_subsampled_with_normals);

    PCL_INFO("Cloud dimensions before / after subsampling: %zu / %zu\n",
        static_cast<std::size_t>(cloud->size()),
        static_cast<std::size_t>(cloud_subsampled->size()));
    return cloud_subsampled_with_normals;
}

这个函数运行之后报错,报错信息定位到

D:\Program Files\PCL 1.12.0\3rdParty\Eigen\eigen3\Eigen\src\Core\util\Memory.h

Memory.h中的Eigen::internal::aligned_free上,看起来是一个释放指针或者什么的函数,不管怎么运行程序,或者重装PCL库、VS2019都解决不了这个bug。

/** \internal Frees memory allocated with aligned_malloc. */
EIGEN_DEVICE_FUNC inline void aligned_free(void *ptr)
{
  #if (EIGEN_DEFAULT_ALIGN_BYTES==0) || EIGEN_MALLOC_ALREADY_ALIGNED
    std::free(ptr);
  #else
    handmade_aligned_free(ptr);
  #endif
}

后来我去PCL库的GitHub仓库去搜,有好多人也遇到这个bug。

下面记录这个bug在win10+VS的解决方案:在VS自己的项目的属性页,将启用增强指令集改为图中所示即可。

 参考资料:

Eigen::internal::aligned_free bug · Issue #4859 · PointCloudLibrary/pcl (github.com)

c++ - Does /arch:AVX enable AVX2? - Stack Overflow

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值