如何在Visual C ++中构建102个libigl教程示例?

时间:2015-07-08 09:11:51

标签: c++ visual-studio-2010 libigl

我目前在win7 32位操作系统上使用Visual C ++ 10.0(2010)。

当我尝试构建libigl github教程的基本示例时: libigl tutorials

以下安装代码可以正常工作:

#include <igl/cotmatrix.h>
#include <Eigen/Dense>
#include <Eigen/Sparse>
#include <iostream>
int main()
{
  Eigen::MatrixXd V(4,2);
  V<<0,0,
     1,0,
     1,1,
     0,1;
  Eigen::MatrixXi F(2,3);
  F<<0,1,2,
     0,2,3;
  Eigen::SparseMatrix<double> L;
  igl::cotmatrix(V,F,L);
  std::cout<<"Hello, mesh: "<<std::endl<<L*V<<std::endl;
  return 0;
}

表示每个教程基本没有问题。

但是,我无法通过tutorial 102

#include <igl/readOFF.h>
#include <igl/viewer/Viewer.h>

Eigen::MatrixXd V;
Eigen::MatrixXi F;

int main(int argc, char *argv[])
{
  // Load a mesh in OFF format
  igl::readOFF("../shared/bunny.off", V, F);

  // Plot the mesh
  igl::viewer::Viewer viewer;
  viewer.data.set_mesh(V, F);
  viewer.launch();
}

在收到一系列错误消息后,遗漏了一些特殊的标题,然后将包含标题的相应目录添加到VS的包含目录中,仍然有一些标题丢失,在我的电脑中找不到。

除了教程所需的include目录外:

x:\Program\libigl-master\include; $(IncludePath);

我已经按照以下方式添加了其他内容:

x:\Program\libigl-master\external\glfw\include;
x:\Program\libigl-master\external\AntTweakBar\src;
x:\Program\libigl-master\external\AntTweakBar\include;
x:\Program\libigl-master\external\glew\include;

错误信息仍然存在:

  

x:\ Program \ libigl-master \ external \ glfw \ include \ glfw \ glfw3.h(163):致命错误C1083:无法打开包含文件:'GL / glcorearb.h':没有这样的文件或目录   1个GT;

所以我补充道:

x:\Program\libigl-master\external\glfw\include\GLFW
D:\Program\libigl-master\external\glfw\include\

得到了:

  

x:\ program \ libigl-master \ external \ glfw \ include \ glfw \ glfw3.h(163):致命错误C1083:无法打开包含文件:'GL / glcorearb.h':没有这样的文件或者直接< / p>

在我的电脑中不存在。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

我有完全相同的问题,而且只是添加他们的包含路径不会使它工作 - 正如他们所说的那样。这是因为LIBIGL本身只是一个帮助操纵3D形状的辅助库,但是他们的例子使用的远不止于此(他们的矩阵系统来自 Eigen ,他们的图形系统使用 GLFW + GLEW < / em>,以及许多其他人。)

但是你可以使用MSVS设置基本库的大多数例子。下载以下内容:

  1. Eigen:这是基本的矩阵/矢量算术等。
  2. GLFW:这用于为OpenGL创建和处理窗口。
  3. GLEW:这个库具有实际的OpenGL函数绑定,可以使用OpenGL函数。
  4. 请注意,这些库对于编译示例是必不可少的,因为在创建示例时,创建者已经使用它们设置了环境(否则他们必须手动编写那些OpenGL和Windows / Linux窗口处理等等。)你感兴趣的案例,this is what "pure OpenGL" code looks like)。所以你要做的是:为这些库设置环境。这是怎么做的:

    在MSVS中创建空项目后,转到解决方案资源管理器&gt;右键单击项目&gt;属性即可。您已打开属性页,其中所有项目配置都已完成。我们需要指定3件事:编译器可以找到标题,我们正在使用的库以及它们可以在哪里找到这些库。

    首先我们设置标题:在左侧菜单中展开 C / C ++&gt;常规,在右侧选择 Aditional Include Directories ,单击向下箭头并单击编辑。将打开一个窗口,其中包含空白字段,单击两次以添加项目。在每一行中添加本征头路径,libigl文件夹路径,glew文件夹路径和glfw文件夹路径(这是一个非常混乱的界面)。

    好的,现在我们需要指定我们将要使用的库。再次,在左侧菜单中,转到链接器&gt;输入&gt; Aditional Dependencies (几乎是同一种接口)。添加 glew32s.lib glfw3.lib opengl32.lib (每行一个)。最后,指定 where 这些库。转到链接器&gt;一般&gt; Aditional Library Directories ,并指定下载的glew32s.lib和glfw3.lib所在的路径。 (例如“C:\ Users ... \ glfw-3.2.1.bin.WIN32 \ lib-vc2010”) - 确保您指定了正确编译器的路径 - 例如,如果您使用的是MSVS 32位2010,则应选择vc2010而不是mingw-64。

    如果使用教程2012源代码在项目中创建源文件,则应该编译它,但如果它不在您的系统路径中,则可能需要specify the paths to the dll's,例如OpenGL32.dll。

    最后,可能出错的最后一件事与名为运行时库的事情有关 - 它在 C / C ++&gt;中。代码生成&gt;运行时库。基本上它描述了一个编译代码的方法,我们使用的每个库都是用不同的编译的,所以我们可能会得到错误...老实说我不太了解这个,我只知道我的不是使用默认值,所以我改为 / MD 并且它有效。去搞清楚。

    PS:你可能还需要更新你的显卡以使OpenGL工作。

答案 1 :(得分:1)

唯一对我有用的是用cmake-gui创建一个视觉工作室项目。这是我做的:

  • 下载并安装cmake https://cmake.org/download/
  • 打开cmake-gui。
  • 在'源代码在哪里',把路径放到教程:... / libigl / tutorial。
  • 在“构建二进制文件的位置”中,放置任何类似的东西(我使用过... / libigl / tutorial / build)。
  • 您还会看到一堆红色的选项。根据需要选择/取消选择。我不得不取消选择Matlab,因为它出于某种原因无法找到它。
  • 配置并生成(询问时,选择您使用的Visual Studio版本)。
  • 您现在应该在build文件夹中有一个Visual Studio解决方案。打开并构建。

答案 2 :(得分:0)

我在Visual Studio 2013中遇到了同样的问题。我尝试使用的头文件是igl / sort.h,无法打开。

tutorial,他们说

  

只需将libigl / include添加到您的包含路径并添加相关标题。

他们在这里引用的包含路径实际上是可以在项目&gt;属性&gt;配置属性&gt; VC ++目录下找到的包含目录,而不是其他包含目录。