Я начинаю использовать библиотеку igl для 3d в C ++, на моем Mac. Поскольку я следовал за учебником, появилась ошибка. Первый пример, в основном просто чтение файла 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. Все, что я сделал, это cmake в исходной папке glfw.
В завершение, я должен добавить, что когда я пытался с Xcode, добавление в проект фреймворка OpenGL (что я нашел в интернете) удалило половину ошибок (ту, что касается igl :: viewer :: OpenGL), но некоторые igl :: viewer :: Зрители остаются.
У кого-нибудь есть подсказка?
Скорее всего, вам нужно будет связать в нескольких платформах OS X, в соответствии с Документы GLFW, добавление
-lglfw -framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo
должен исправить вашу проблему.
Других решений пока нет …