VS2017+PCL1.8.1进行贪婪三角化重建无法解析外部符号问题求解

先贴代码(github上找的)

#pragma comment(lib, "User32.lib")
#pragma comment(lib, "gdi32.lib")
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/features/normal_3d.h>
#include <pcl/surface/gp3.h>
#include <pcl/visualization/pcl_visualizer.h>

int main(int argc, char** argv)
{
    //将ply格式转换为pcd格式
    pcl::PLYReader reader;
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloudyjp(new pcl::PointCloud<pcl::PointXYZ>);
    reader.read<pcl::PointXYZ>("D:\Point_Cloud_File\bun000.ply", *cloudyjp);
    pcl::io::savePCDFile("D:\Point_Cloud_File\bun0.pcd", *cloudyjp);

    //加载输入文件,格式要匹配
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::PCLPointCloud2 cloud_blob;
    pcl::io::loadPCDFile("bun0.pcd", cloud_blob);
    pcl::fromPCLPointCloud2(cloud_blob, *cloud);
    //* 数据需要先读入pclpointcloud2中,有用的导入cloud

    //法线估计
    pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> n;
    pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);
    pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);
    tree->setInputCloud(cloud);
    n.setInputCloud(cloud);
    n.setSearchMethod(tree);
    n.setKSearch(20);
    n.compute(*normals);
    //* 法线不包含曲率

    //拼接XYZ和法线
    pcl::PointCloud<pcl::PointNormal>::Ptr cloud_with_normals(new pcl::PointCloud<pcl::PointNormal>);
    pcl::concatenateFields(*cloud, *normals, *cloud_with_normals);
    //* cloud_with_normals=cloud +normals

    //创建搜索树
    pcl::search::KdTree<pcl::PointNormal>::Ptr tree2(new pcl::search::KdTree<pcl::PointNormal>);
    tree2->setInputCloud(cloud_with_normals);

    //初始化目标
    pcl::GreedyProjectionTriangulation<pcl::PointNormal> gp3;
    pcl::PolygonMesh triangles;

    //设置搜索半径(最大边长度)
    gp3.setSearchRadius(0.025);
    //设置贪婪三角投影算法的参数值
    gp3.setMu(2.5);
    gp3.setMaximumNearestNeighbors(100);
    gp3.setMaximumSurfaceAngle(M_PI / 4);//45度
    gp3.setMinimumAngle(M_PI / 18);//10度
    gp3.setMaximumAngle(2 * M_PI / 3);//120度
    gp3.setNormalConsistency(false);

    //获取结果
    gp3.setInputCloud(cloud_with_normals);
    gp3.setSearchMethod(tree2);
    gp3.reconstruct(triangles);

    //额外的顶点信息
    std::vector<int> parts = gp3.getPartIDs();
    std::vector<int> states = gp3.getPointStates();

    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
    viewer->setBackgroundColor(0, 0, 0);

    viewer->addPolygonMesh(triangles, "triangles");
    viewer->addCoordinateSystem(1.0);
    viewer->initCameraParameters();
    while (!viewer->wasStopped())
    {
        viewer->spinOnce(100);
        boost::this_thread::sleep(boost::posix_time::microseconds(100000));
    }

    return 0;
}

经过了一系列调试之后我遇到了这个很懵逼的事情,下面是错误描述

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 deflateEnd,该符号在函数 "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 中被引用 Project1 C:\Users\admin\source\repos\Project1\Project1\libboost_iostreams-vc141-mt-gd-1_64.lib(zlib.obj) 1
错误 LNK2001 无法解析的外部符号 "public: virtual void __cdecl pcl::visualization::PCLVisualizer::FPSCallback::Execute(class vtkObject *,unsigned long,void )" (?Execute@FPSCallback@PCLVisualizer@visualization@pcl@@UEAAXPEAVvtkObject@@KPEAX@Z) Project1 C:\Users\admin\source\repos\Project1\Project1\源.obj 1
错误 LNK2019 无法解析的外部符号 deflate,该符号在函数 "protected: int __cdecl boost::iostreams::detail::zlib_base::xdeflate(int)" (?xdeflate@zlib_base@detail@iostreams@boost@@IEAAHH@Z) 中被引用 Project1 C:\Users\admin\source\repos\Project1\Project1\libboost_iostreams-vc141-mt-gd-1_64.lib(zlib.obj) 1
错误 LNK2019 无法解析的外部符号 inflate,该符号在函数 "protected: int __cdecl boost::iostreams::detail::zlib_base::xinflate(int)" (?xinflate@zlib_base@detail@iostreams@boost@@IEAAHH@Z) 中被引用 Project1 C:\Users\admin\source\repos\Project1\Project1\libboost_iostreams-vc141-mt-gd-1_64.lib(zlib.obj) 1
错误 LNK2019 无法解析的外部符号 inflateEnd,该符号在函数 "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 中被引用 Project1 C:\Users\admin\source\repos\Project1\Project1\libboost_iostreams-vc141-mt-gd-1_64.lib(zlib.obj) 1
错误 LNK2019 无法解析的外部符号 deflateReset,该符号在函数 "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 中被引用 Project1 C:\Users\admin\source\repos\Project1\Project1\libboost_iostreams-vc141-mt-gd-1_64.lib(zlib.obj) 1
错误 LNK2019 无法解析的外部符号 inflateReset,该符号在函数 "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 中被引用 Project1 C:\Users\admin\source\repos\Project1\Project1\libboost_iostreams-vc141-mt-gd-1_64.lib(zlib.obj) 1
错误 LNK2019 无法解析的外部符号 crc32,该符号在函数 "protected: void __cdecl boost::iostreams::detail::zlib_base::after(char const * &,char * &,bool)" (?after@zlib_base@detail@iostreams@boost@@IEAAXAEAPEBDAEAPEAD_N@Z) 中被引用 Project1 C:\Users\admin\source\repos\Project1\Project1\libboost_iostreams-vc141-mt-gd-1_64.lib(zlib.obj) 1
错误 LNK2019 无法解析的外部符号 deflateInit2_,该符号在函数 "private: void __cdecl boost::iostreams::detail::zlib_base::do_init(struct boost::iostreams::zlib_params const &,bool,void * (__cdecl
)(void ,unsigned int,unsigned int),void (__cdecl)(void *,void *),void )" (?do_init@zlib_base@detail@iostreams@boost@@AEAAXAEBUzlib_params@34@_NP6APEAXPEAXII@ZP6AX22@Z2@Z) 中被引用 Project1 C:\Users\admin\source\repos\Project1\Project1\libboost_iostreams-vc141-mt-gd-1_64.lib(zlib.obj) 1
错误 LNK2019 无法解析的外部符号 inflateInit2_,该符号在函数 "private: void __cdecl boost::iostreams::detail::zlib_base::do_init(struct boost::iostreams::zlib_params const &,bool,void * (__cdecl
)(void ,unsigned int,unsigned int),void (__cdecl)(void *,void *),void *)" (?do_init@zlib_base@detail@iostreams@boost@@AEAAXAEBUzlib_params@34@_NP6APEAXPEAXII@ZP6AX22@Z2@Z) 中被引用 Project1 C:\Users\admin\source\repos\Project1\Project1\libboost_iostreams-vc141-mt-gd-1_64.lib(zlib.obj) 1
错误 LNK1120 10 个无法解析的外部命令 Project1 C:\Users\admin\source\repos\Project1\x64\Debug\Project1.exe 1

请问各位大佬这个问题该如何解决,孩子刚学三维重建,现在一脸懵逼,求求了!!!

boost的iostream库没引入吧,链接器-输入-附加依赖项加入,对应boost的iostream的lib

img

或者你编译Boost时,忘了编译iostreams