1

我目前在 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;
}

这表明根据教程基本上没有问题。

但是,我无法通过以下方式获得教程 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的包含目录中,仍然有一些头文件丢失,在我的计算机中找不到。

除了本教程所需的包含目录:

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>

所以我补充说:

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': 没有这样的文件或目录

这在我的电脑中不存在。

我应该怎么办?

4

3 回答 3

1

我遇到了完全相同的问题,问题是简单地添加他们的包含路径不会使它工作 - 正如他们所说的那样。那是因为 LIBIGL 本身只是一个帮助操作 3D 形状的辅助库,但他们的示例使用的远不止这些(他们的矩阵系统来自Eigen,他们的图形系统使用GLFW+GLEW等等)。

但是您可以获得大多数在 MSVS 上设置基本库的示例。下载以下内容:

  1. Eigen:这是用于基本矩阵/向量算术等。
  2. GLFW:用于为 OpenGL 创建和处理窗口。
  3. GLEW:这个库有实际的 OpenGL 函数绑定来使用 OpenGL 函数。

请注意,这些库对于编译示例是必不可少的,因为在制作示例时,创建者已经设置了环境(否则他们将不得不手动编写 OpenGL 和 Windows/Linux 窗口处理等代码。如果你重新感兴趣,这就是“纯 OpenGL”代码的样子)。所以你要做的是:为这些库设置环境。这是如何做到的:

在 MSVS 中创建一个空项目后,转到解决方案资源管理器 > 右键单击​​项目 > 属性。您已经打开了Property Pages,所有项目配置都在其中完成。我们需要指定 3 件事:编译器在哪里可以找到头文件、我们正在使用的库以及在哪里可以找到这些库。

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

好的,现在我们需要指定我们要使用的库。同样,在左侧菜单中,转到Linker > Input > Aditional Dependencies(几乎是同一种界面)。添加glew32s.libglfw3.libopengl32.lib(每行一个)。最后,指定这些库的位置。转到Linker > General > Aditional Library Directories,并指定下载的 glew32s.lib 和 glfw3.lib 所在的路径。(类似于"C:\Users...\glfw-3.2.1.bin.WIN32\lib-vc2010") - 确保您指定了正确编译器的路径 - 例如,如果您使用的是 MSVS 32 位 2010 你应该选择 vc2010 而不是 mingw-64。

如果您使用教程 2012 源代码在项目中创建源文件,则它应该可以编译,但如果系统路径中没有它,您可能必须指定 dll 的路径,例如 OpenGL32.dll。

最后,可能出错的最后一件事与运行时库有关——它位于C/C++ > Code Generation > Runtime Library中。基本上它描述了一种编译代码的方法,并且我们使用的每个库都是使用不同的库编译的,所以我们可能会出错......老实说,我对此不太了解,我只知道我的不是使用默认的,所以我更改为/MD并且它有效。去搞清楚。

PS:您可能还需要更新显卡才能使 OpenGL 正常工作。

于 2016-10-17T03:24:19.073 回答
1

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

  • 下载并安装 cmake https://cmake.org/download/
  • 打开 cmake-gui。
  • 在“源代码在哪里”中,输入教程的路径:.../libigl/tutorial。
  • 在“构建二进制文件的位置”中,放置您喜欢的任何内容(我使用.../libigl/tutorial/build)。
  • 您还将看到一堆红色的选项。根据需要选择/取消选择。我不得不取消选择 Matlab,因为它由于某种原因找不到它。
  • 配置和生成(当询问时,选择您使用的任何版本的 Visual Studio)。
  • 您现在应该在 build 文件夹中有一个 Visual Studio 解决方案。打开并构建。
于 2017-02-27T09:19:08.463 回答
0

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

教程中,他们说

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

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

于 2016-08-05T08:17:01.587 回答