gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:51:23 37 4
gpt4 key购买 nike

我目前在 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的包含目录中后,仍然缺少一些头文件,在我的电脑中找不到。

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

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): fatal error C1083: Cannot open include file: 'GL/glcorearb.h': No such file or directory 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): fatal error C1083: Cannot open include file: 'GL/glcorearb.h': No such file or directo

我的电脑里没有。

我该怎么办?

最佳答案

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

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

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

请注意,这些库对于编译示例是必不可少的,因为在制作示例时,创建者已经为它们设置了环境(否则他们将不得不手动编写那些 OpenGL 和 Windows/Linux 窗口处理等的代码。在如果您有兴趣,this is what "pure OpenGL" code looks like)。所以你要做的是:为这些库设置环境。这是如何做到的:

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

首先我们设置标题:在左侧菜单中展开C/C++ > 常规,然后在右侧选择附加包含目录,单击向下箭头并点击编辑。将打开一个包含空白字段的窗口,单击它们两次 以添加项目。在每一行添加eigen头路径、libigl文件夹路径、glew文件夹路径和glfw文件夹路径(这是一个很困惑的界面)。

好的,现在我们需要指定要使用的库。同样,在左侧菜单中,转到 Linker > Input > Additional 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 源代码在项目中创建源文件,它应该可以编译,但您可能必须 specify the paths to the dll's例如 OpenGL32.dll 如果它不在您的系统路径中。

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

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

关于c++ - 如何在 Visual C++ 中构建 libigl 教程的 102 示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31288249/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com