我开始在Mac上的C++中将igl库用于3d。当我按照教程进行操作时,出现了一个错误。第一个示例,基本上只是读取OFF文件,效果很好。但是第二个没有,使用igl::viewer。这是代码:
#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("/bunny.off", V, F);
// Plot the mesh
igl::viewer::Viewer viewer;
viewer.data.set_mesh(V, F);
viewer.launch();
}
我只是在终端输入:
g++ -std=c++11 -I path_to_librairies/eigen-eigen-07105f7124f9/ -I path_to_librairies/libigl/include/ -I path_to_libraries/glfw-3.1.2/include/ main.cpp -o Test
其中path_to_libraries是一个个人文件夹,我的库(igl,eigen,glfw)保留在其中。
终端返回许多错误,例如:
Undefined symbols for architecture x86_64:
"_glActiveTexture", referenced from:
igl::viewer::OpenGL_state::bind_mesh() in main-805320.o
我还下载了Eigen和glfw。我所做的只是glfw源文件夹中的cmake。
结局,我应该补充一点,当我尝试使用Xcode时,在项目中添加框架OpenGL(我在互联网上找到的东西)消除了一半的错误(与igl::viewer::OpenGL有关的错误),但有一些igl::viewer::Viewer仍然存在。
有人有任何线索吗?
最佳答案
根据GLFW's docs,您很可能需要链接一些OS X框架,并添加
-lglfw -framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo
应该解决您的问题。