openmesh的安装及其在vs2015中的配置--备忘

一、openmesh的安装

1.在下载openmesh之前,首先查看电脑操作系统,如图:


2.得到系统类型之后,结合自己安装的vs的版本,我的是vs2015,到www.openmesh.org下载指定的版本(我安装的是64位 with apps)


3.下载之后是exe文件,直接安装,记下安装的目录(D:/openmesh 7.0)

二、openmesh在vs2015中的配置

1.在vs中新建win32的控制台空项目,新建一个源文件test.cpp,然后配置项目属性

(1)首先在上方选择模式 ,本文配置时Release,x64的结构如下

(2)在项目属性中配置包含目录和库目录


(3)项目属性中配置预处理_USE_MATH_DEFINES


(4)项目属性链接器-》输入中配置附加依赖项OpenMeshCore.lib;OpenMeshTools.lib;


2.上述配置完成之后,在test.cpp中添加输出一个立方体off文件的代码

[cpp]  view plain  copy
  1. /* ========================================================================= * 
  2. *                                                                           * 
  3. *                               OpenMesh                                    * 
  4. *           Copyright (c) 2001-2015, RWTH-Aachen University                 * 
  5. *           Department of Computer Graphics and Multimedia                  * 
  6. *                          All rights reserved.                             * 
  7. *                            www.openmesh.org                               * 
  8. *                                                                           * 
  9. *---------------------------------------------------------------------------* 
  10. * This file is part of OpenMesh.                                            * 
  11. *---------------------------------------------------------------------------* 
  12. *                                                                           * 
  13. * Redistribution and use in source and binary forms, with or without        * 
  14. * modification, are permitted provided that the following conditions        * 
  15. * are met:                                                                  * 
  16. *                                                                           * 
  17. * 1. Redistributions of source code must retain the above copyright notice, * 
  18. *    this list of conditions and the following disclaimer.                  * 
  19. *                                                                           * 
  20. * 2. Redistributions in binary form must reproduce the above copyright      * 
  21. *    notice, this list of conditions and the following disclaimer in the    * 
  22. *    documentation and/or other materials provided with the distribution.   * 
  23. *                                                                           * 
  24. * 3. Neither the name of the copyright holder nor the names of its          * 
  25. *    contributors may be used to endorse or promote products derived from   * 
  26. *    this software without specific prior written permission.               * 
  27. *                                                                           * 
  28. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS       * 
  29. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * 
  30. * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A           * 
  31. * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER * 
  32. * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  * 
  33. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,       * 
  34. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR        * 
  35. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF    * 
  36. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING      * 
  37. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS        * 
  38. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.              * 
  39. *                                                                           * 
  40. * ========================================================================= */  
  41. /*===========================================================================*\ 
  42. *                                                                           * 
  43. *   $Revision$                                                         * 
  44. *   $Date$                   * 
  45. *                                                                           * 
  46. \*===========================================================================*/  
  47. #include <iostream>  
  48. // -------------------- OpenMesh  
  49. #include <OpenMesh/Core/IO/MeshIO.hh>  
  50. #include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh>  
  51. // ----------------------------------------------------------------------------  
  52. typedef OpenMesh::PolyMesh_ArrayKernelT<>  MyMesh;  
  53. // ----------------------------------------------------------------------------  
  54. // Build a simple cube and write it to std::cout  
  55.   
  56. int main()  
  57. {  
  58.     MyMesh mesh;  
  59.     // generate vertices  
  60.     MyMesh::VertexHandle vhandle[8];  
  61.     vhandle[0] = mesh.add_vertex(MyMesh::Point(-1, -1, 1));  
  62.     vhandle[1] = mesh.add_vertex(MyMesh::Point(1, -1, 1));  
  63.     vhandle[2] = mesh.add_vertex(MyMesh::Point(1, 1, 1));  
  64.     vhandle[3] = mesh.add_vertex(MyMesh::Point(-1, 1, 1));  
  65.     vhandle[4] = mesh.add_vertex(MyMesh::Point(-1, -1, -1));  
  66.     vhandle[5] = mesh.add_vertex(MyMesh::Point(1, -1, -1));  
  67.     vhandle[6] = mesh.add_vertex(MyMesh::Point(1, 1, -1));  
  68.     vhandle[7] = mesh.add_vertex(MyMesh::Point(-1, 1, -1));  
  69.     // generate (quadrilateral) faces  
  70.     std::vector<MyMesh::VertexHandle>  face_vhandles;  
  71.     face_vhandles.clear();  
  72.     face_vhandles.push_back(vhandle[0]);  
  73.     face_vhandles.push_back(vhandle[1]);  
  74.     face_vhandles.push_back(vhandle[2]);  
  75.     face_vhandles.push_back(vhandle[3]);  
  76.     mesh.add_face(face_vhandles);  
  77.   
  78.     face_vhandles.clear();  
  79.     face_vhandles.push_back(vhandle[7]);  
  80.     face_vhandles.push_back(vhandle[6]);  
  81.     face_vhandles.push_back(vhandle[5]);  
  82.     face_vhandles.push_back(vhandle[4]);  
  83.     mesh.add_face(face_vhandles);  
  84.     face_vhandles.clear();  
  85.     face_vhandles.push_back(vhandle[1]);  
  86.     face_vhandles.push_back(vhandle[0]);  
  87.     face_vhandles.push_back(vhandle[4]);  
  88.     face_vhandles.push_back(vhandle[5]);  
  89.     mesh.add_face(face_vhandles);  
  90.     face_vhandles.clear();  
  91.     face_vhandles.push_back(vhandle[2]);  
  92.     face_vhandles.push_back(vhandle[1]);  
  93.     face_vhandles.push_back(vhandle[5]);  
  94.     face_vhandles.push_back(vhandle[6]);  
  95.     mesh.add_face(face_vhandles);  
  96.     face_vhandles.clear();  
  97.     face_vhandles.push_back(vhandle[3]);  
  98.     face_vhandles.push_back(vhandle[2]);  
  99.     face_vhandles.push_back(vhandle[6]);  
  100.     face_vhandles.push_back(vhandle[7]);  
  101.     mesh.add_face(face_vhandles);  
  102.     face_vhandles.clear();  
  103.     face_vhandles.push_back(vhandle[0]);  
  104.     face_vhandles.push_back(vhandle[3]);  
  105.     face_vhandles.push_back(vhandle[7]);  
  106.     face_vhandles.push_back(vhandle[4]);  
  107.     mesh.add_face(face_vhandles);  
  108.     // write mesh to output.obj  
  109.     try  
  110.     {  
  111.         if (!OpenMesh::IO::write_mesh(mesh, "output.off"))  
  112.         {  
  113.             std::cerr << "Cannot write mesh to file 'output.off'" << std::endl;  
  114.             return 1;  
  115.         }  
  116.     }  
  117.     catch (std::exception& x)  
  118.     {  
  119.         std::cerr << x.what() << std::endl;  
  120.         return 1;  
  121.     }  
  122.     return 0;  
  123. }  

出现的问题:第一次执行程序时“计算机中丢失openmeshcore.dll,请重新安装。。。”


可以看到其实是有openmeshcore.dll这个文件的,所以是环境变量配置的问题。

在编译链接c++带有dll库的应用程序时,如果dll所在的目录和可执行文件所在的目录不在同一个目录,或者是不在系统的环境变量path所在的目录内,这时一般要求修改系统的环境变量,或者将dll库复制到exe文件所在的目录,但是这样感觉不好,可以采用另一种方便的方法,就是通过修改修改vs项目配置里面的环境变量:

xxx具体项目 -> 属性 ->  配置属性 -> 调试 ->环境变量(Environment) -> 添加 ->path=%path%;..\bin\;

其中../bin/就是添加的环境变量,然后项目就会自动在..\bin\查找是否有dll文件)设置好环境变量后重新生成解决方案(我是重开vs)问题解决!

3.执行完成后会在工程目录里面生成一个output.off文件

使用meshviewer查看如下所示


注:mesh viewer在百度即可下载,下载下来是一个压缩包,无需安装解压后找到可执行程序即可打开output.off文件。

注意:一定要在配置属性之前选定模式和位数,然后在进行对应的配置。因为配置完成之后,如果再去修改模式或位数,之前的配置就没了,又需要对应的重新配置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值