点云之OpenMesh:error C1083:无法打开包括文件:“OpenMesh/Core/IO/MeshIO.hh”:No such file or directory


 

1、这是一个错误引发的惨案:错误提示如下:

    • 在进行点云程序调试时,出现错误:[error C1083:无法打开包括文件:“OpenMesh/Core/IO/MeshIO.hh”:No such file or directory],如下图所示:

  下图为报错代码:

2、原因分析及解决方案:

    • 几经搜索,发现是没有安装OpenMesh,打开OpenMesh官网 http://www.openmesh.org/,然后点击左侧的 " Download" ,查找自己需要的版本下载。

因为本人程序运行环境为:WIN7系统、VS2012、PCL-1.7.2-AllInOne-msvc2012-win32、源程序为32位平台编译。所以我选择如下图所示版本:

上图中 6.3DLL 6.3(static)多出四个dll文件,其他无区别,具体如下图所示(本人选择的下载的是6.3DLL):

  2.1、下载并安装完成后,进行相应的配置。

    • 在【解决方案资源管理器】中右击项目,然后依次选择【属性】--> 【C/C++】 -->【常规】-->【附加包含目录】:在【附加包含目录】中添加路径:E:\PCL-VS2012\OpenMesh6.3\OpenMesh 6.3\include(此处仅为示例,要以自己的路径为准):

    • 预处理器定义。依然在上一步的页面中操作,选择【预处理器】-->【预处理器定义】,如果窗口中没有 “_USE_MATH_DEFINES”,则将其输入到【预处理器定义】窗口中(直接将双引号中的内容添加进去就行,下图窗口中的"_USE_MATH_DEFINES=0"为项目自带的)。
    • 然后选择【链接器】-->【常规】-->【附加库目录】,在窗口中输入:E:\PCL-VS2012\OpenMesh6.3\OpenMesh 6.3\lib(此处仅为示例,要以自己的路径为准):

    • 之后选择【链接器】-->【输入】-->【附加依赖项】,在其中输入“OpenMeshCored.lib" 和 "OpenMeshToolsd.lib”:

2.2、配置完成后,应用并确定配置,接下来运行程序。

    • 又出现错误[error C2248:"OpenMesh::ArrayKernel::vertices_"无法访问private成员(在“OpenMesh::ArrayKernel”类中声明)”]
    • 解决方案:在错误列表中双击错误,定位到报错代码的位置。然后将“private”更改为“public”:  

    • 继续运行程序,然后又报错:[无法启动此程序,因为计算机中丢失OpenMeshCored.dll。尝试重新安装该程序以解决此问题。]

    • 解决方案:在OpenMesh 6.3的安装文件夹下找到 “OpenMeshCored.dll”,然后将其复制到 C:\Windows\System32 和 C:\Windows\SysWOW64文件夹下(两个文件夹都要复制进去)。
    • 继续运行程序,然后出现错误,如下图所示(是不是有种 我们好像在哪儿见过 的感觉),怎么办?参照上面的方案

3、来都来了,不让你们看看结果怎么能行。

感谢博客(https://blog.csdn.net/My__long/article/details/80030824)

结案。