使用的版本:PCL1.12.1+VTK9.1+OpenCV4.5.5+VS2019
产生的原因:
1. flann冲突,因为OpenCV和PCL都存在flann库,导致产生冲突
2. 属性列表设置了两个,分别加载,并且还勾选了从父级或默认项目继承造成混乱
如下图所示:这样会造成生成解决方案时出现乱七八糟的报错
3. Debug模式和Release模式分不清,导致***d.lib和***.lib全都加载进了连接器的输入中(我使用的是Release模式,并且OpenCV也是Release重新编译的,编译OpenCV时注意,使用VS2019进行生成,VS2022会生成不成功)
解决办法:
1. 检查Release或debug模式
如下图,项目右键,C/C++->代码生成-》运行库,Debug选择MDd,Release选择MD
2. 解决flann冲突
参考博文
(31条消息) 解决PCL和OPENCV冲突问题_opencv和pcl冲突__温柔星球的博客-CSDN博客
3. 最重要的一步,合并属性列表,同时PCL的包含目录、库目录以及链接器输入保持最前,这时候勾选从父级或者默认项目中继承也是没有问题的。
4. 预处理器的定义修改:
_CRT_SECURE_NO_WARNINGS
最后程序完美运行,vtk(编译vtk9.1建议也使用VS2019,VS2022不通过)也能够成功显示
其他问题:
所有的库,添加的同一属性中*d.lib和*.lib绝对不能混合添加