PCL 未正确安装 vcpkg
PCL not properly installed with vcpkg
我已经使用 ./vcpkg install pcl:x64-windows
安装了带有 vcpkg 的 PCL。
一段时间后,我注意到 concave_hull.h、convex_hull.h 和 qhull.h 没有与库的其余部分一起安装。
有关我正在使用的内容的其他信息:
- vcpkg 标签 (2020.11.01)
- OS Windows 10
- VS 社区 16.8.3
为了完成起见,我包含了导致我遇到此问题的代码:
#include <pcl/surface/concave_hull.h>
#include <pcl/point_cloud.h>
int main()
{
using point_cloud_colored = pcl::PointCloud<pcl::PointXYZRGB>;
//plane is generated from somewhere else and is not important for this issue
point_cloud_colored::Ptr plane = load_cloud_from_somewhere();
point_cloud_colored::Ptr hull_cloud(new point_cloud_colored);
pcl::ConcaveHull<point_cloud_colored> chull;
chull.setInputCloud(plane);
chull.setAlpha(0.1);
chull.reconstruct(*hull_cloud);
}
此代码产生以下错误消息:
严重性代码说明项目文件行抑制状态
错误 C1083 无法打开包含文件:'pcl/surface/concave_hull.h':没有这样的文件或目录 farrao_gui C:\Users\ ...\farrao\source\farrao_gui\farrao_gui.cpp 39
我已经尝试通过 vcpkg 重新安装,但没有成功。
有办法解决这个问题吗?
一段时间后,我按照本指南切换到可重入 qhull 版本解决了问题:http://www.qhull.org/html/README_r.txt。
您必须将 concave_hull 代码复制到您自己项目中的文件(hpp、h 和 cpp)中。
修复 headers 并删除每个文件中的 #ifdef HAVE_QHULL
并将这段代码添加到您的 hpp 文件中:
extern "C"
{
#include <libqhull_r/qhull_ra.h>
qhT qh_qh;
qhT* qh = &qh_qh;
}
之后:
- 将每个
qh
Makro 替换为 qh->
- 遍历每个
qh_...
函数并添加 qh
指针作为第一个参数(如果需要)
- 遍历每个
FOREACHvertex_i_
Makro 并添加 qh
作为第一个参数
这可能不是最佳解决方案,因为这个问题完全超出了我的能力范围,但该算法确实产生了结果。它也可能适用于凸算法(因为它也不包含在 vcpkg 安装中)。
我希望这个答案对遇到类似问题的人有所帮助。
我已经使用 ./vcpkg install pcl:x64-windows
安装了带有 vcpkg 的 PCL。
一段时间后,我注意到 concave_hull.h、convex_hull.h 和 qhull.h 没有与库的其余部分一起安装。
有关我正在使用的内容的其他信息:
- vcpkg 标签 (2020.11.01)
- OS Windows 10
- VS 社区 16.8.3
为了完成起见,我包含了导致我遇到此问题的代码:
#include <pcl/surface/concave_hull.h>
#include <pcl/point_cloud.h>
int main()
{
using point_cloud_colored = pcl::PointCloud<pcl::PointXYZRGB>;
//plane is generated from somewhere else and is not important for this issue
point_cloud_colored::Ptr plane = load_cloud_from_somewhere();
point_cloud_colored::Ptr hull_cloud(new point_cloud_colored);
pcl::ConcaveHull<point_cloud_colored> chull;
chull.setInputCloud(plane);
chull.setAlpha(0.1);
chull.reconstruct(*hull_cloud);
}
此代码产生以下错误消息:
严重性代码说明项目文件行抑制状态 错误 C1083 无法打开包含文件:'pcl/surface/concave_hull.h':没有这样的文件或目录 farrao_gui C:\Users\ ...\farrao\source\farrao_gui\farrao_gui.cpp 39
我已经尝试通过 vcpkg 重新安装,但没有成功。
有办法解决这个问题吗?
一段时间后,我按照本指南切换到可重入 qhull 版本解决了问题:http://www.qhull.org/html/README_r.txt。
您必须将 concave_hull 代码复制到您自己项目中的文件(hpp、h 和 cpp)中。
修复 headers 并删除每个文件中的 #ifdef HAVE_QHULL
并将这段代码添加到您的 hpp 文件中:
extern "C"
{
#include <libqhull_r/qhull_ra.h>
qhT qh_qh;
qhT* qh = &qh_qh;
}
之后:
- 将每个
qh
Makro 替换为qh->
- 遍历每个
qh_...
函数并添加qh
指针作为第一个参数(如果需要) - 遍历每个
FOREACHvertex_i_
Makro 并添加qh
作为第一个参数
这可能不是最佳解决方案,因为这个问题完全超出了我的能力范围,但该算法确实产生了结果。它也可能适用于凸算法(因为它也不包含在 vcpkg 安装中)。
我希望这个答案对遇到类似问题的人有所帮助。