我目前在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>
在我的电脑中不存在。
我该怎么办?
答案 0 :(得分:1)
我有完全相同的问题,而且只是添加他们的包含路径不会使它工作 - 正如他们所说的那样。这是因为LIBIGL本身只是一个帮助操纵3D形状的辅助库,但是他们的例子使用的远不止于此(他们的矩阵系统来自 Eigen ,他们的图形系统使用 GLFW + GLEW < / em>,以及许多其他人。)
但是你可以使用MSVS设置基本库的大多数例子。下载以下内容:
请注意,这些库对于编译示例是必不可少的,因为在创建示例时,创建者已经使用它们设置了环境(否则他们必须手动编写那些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创建一个视觉工作室项目。这是我做的:
答案 2 :(得分:0)
我在Visual Studio 2013中遇到了同样的问题。我尝试使用的头文件是igl / sort.h,无法打开。
在tutorial,他们说
只需将libigl / include添加到您的包含路径并添加相关标题。
他们在这里引用的包含路径实际上是可以在项目&gt;属性&gt;配置属性&gt; VC ++目录下找到的包含目录,而不是其他包含目录。