Как построить 102 примера учебника по либигли в Visual C++?
В настоящее время я использую Visual C++ 10.0(2010) на 32-битной ОС win7.
Когда я пытался создать базовые примеры учебников по libigl github: учебники по libigl
Следующий код установки работает нормально:
#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, все еще отсутствует некоторый заголовок, который не может быть найден на моем компьютере.
За исключением каталога 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 нет
И я добавил:
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': такого файла или директо нет
который не существует в моем компьютере.
Что я должен делать?
3 ответа
У меня была точно такая же проблема, и дело в том, что простое добавление их путей включения не заставит это работать - как они сказали, что будет. Это потому, что LIBIGL сама по себе является просто вспомогательной библиотекой, которая помогает манипулировать трехмерными фигурами, но их примеры используют гораздо больше (их матричная система основана на Eigen, их графическая система использует GLFW + GLEW, среди многих других).
Но вы можете получить большинство примеров работы MSVS с настройкой основных библиотек. Загрузите следующее:
- Eigen: это для базовой матричной / векторной арифметики и т. Д.
- GLFW: используется для создания и обработки окон для OpenGL.
- GLEW: эта библиотека имеет фактические привязки функций OpenGL для использования функций OpenGL.
Обратите внимание, что эти библиотеки необходимы для компиляции примеров, потому что, когда примеры создавались, создатели настраивали среду с ними (в противном случае им пришлось бы вручную кодировать обработку этих окон OpenGL и Windows/Linux и т. Д. В случае, если вы ' интересно, вот как выглядит "чистый OpenGL" код). Так что вам нужно сделать: установить среду для этих библиотек. Вот как это сделать:
После создания пустого проекта в MSVS перейдите в обозреватель решений> щелкните правой кнопкой мыши проект> Свойства. Вы открыли страницы свойств, где все настройки проекта выполнены. Нам нужно указать 3 вещи: где компилятор может найти заголовки, библиотеки, которые мы используем, и где он может найти эти библиотеки.
Сначала мы устанавливаем заголовки: в левом меню разверните C/C++ > Общие, а справа выберите " Дополнительные каталоги включения", нажмите стрелку вниз и нажмите "Изменить". Откроется окно с пустыми полями, дважды щелкните по ним, чтобы добавить элементы. Добавьте собственный путь к заголовку, путь к папке libigl, путь к папке glew и путь к папке glfw в каждой строке (это очень запутанный интерфейс).
Хорошо, теперь нам нужно указать, какие библиотеки мы будем использовать. Опять же, в левом меню перейдите в Linker > Input > Adtional Dependencies (почти такой же интерфейс). Добавьте glew32s.lib, glfw3.lib и opengl32.lib (по одному для каждой строки). Наконец, укажите, где находятся эти библиотеки. Перейдите в Linker > General > Aditional Library Directory и укажите путь к загруженным файлам 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++ > Генерация кода> Библиотека времени выполнения. По сути, он описывает метод для компиляции кода, и каждая используемая нами библиотека была скомпилирована по-разному, так что мы можем получить ошибки... Честно говоря, я мало что знаю об этом, я просто знаю, что моя не была работает со стандартным, поэтому я перешел на /MD, и это сработало. Пойди разберись.
PS: Вам также может понадобиться обновить видеокарту, чтобы OpenGL работал.
Единственное, что сработало для меня, это создание визуального студийного проекта с помощью cmake-gui. Вот что я сделал:
- Загрузите и установите cmake https://cmake.org/download/.
- Откройте cmake-gui.
- В разделе "где находится исходный код" укажите путь к учебникам:... / libigl / tutorial.
- В "где собрать двоичные файлы" поместите все, что вам нравится (я использовал... / libigl / tutorial / build).
- Вы также увидите кучу вариантов в красном. Выберите / отмените выбор по желанию. Мне пришлось отменить выбор Matlab, так как он не мог найти его по какой-то причине.
- Настройте и сгенерируйте (когда вас спросят, выберите любую версию Visual Studio, которую вы используете).
- Теперь у вас должно быть решение Visual Studio в папке сборки. Откройте и постройте.
У меня была та же проблема в Visual Studio 2013. И файл заголовка, который я пытался использовать, был igl/ sort.h, который не может быть открыт.
В уроке они сказали
Просто добавьте libigl/ include в ваш путь включения и включите соответствующие заголовки.
И путь включения, на который они ссылались здесь, на самом деле является каталогами включения, которые можно найти в проекте> свойства> Свойства конфигурации> Каталоги VC++, а не в дополнительных каталогах включения.