Проблемы с использованием внешней библиотеки (GEGELATI) - PullRequest
0 голосов
/ 05 апреля 2020

Недавно я начинаю изучать машинное обучение и загружаю библиотеку, которая с ним работает: GEGELATI для C ++, в Visual Studio. Ссылка на библиотеку: https://github.com/gegelati/gegelati. Я также загружаю пример "игры-палки" с той же страницы. Я следую всем пунктам, чтобы построить библиотеку и пример, но он выдает ошибку: «не могу найти gegelati.h». Когда я увидел это, я вспомнил совет, который мне дала команда "cmake .." при сборке библиотеки в проекте:

*CMake Warning at CMakeLists.txt:68 (find_package):
  By not providing "FindGEGELATI.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "GEGELATI",
  but CMake did not find one.

Не удалось найти файл конфигурации пакета, предоставленный "GEGELATI" с каким-либо из следующих имен:

GEGELATIConfig.cmake
gegelati-config.cmake

Добавьте префикс установки «GEGELATI» в CMAKE_PREFIX_PATH или установите «GEGELATI_DIR» в каталог, содержащий один из указанных выше файлов. Если «GEGELATI» предоставляет отдельный пакет разработки или SDK, убедитесь, что он установлен. *

Если вам нужно знать, это код в моем CMakeList.txt: https://drive.google.com/file/d/1hDkC6coCWaQNb1Cv1QzrJbUMucjYE68y/view?usp=sharing

Чтобы решить эту проблему, я решил скопировать файлы gegelati.h и GEGELATIConfig.cmake (из папки, где я установил gegelati), но когда я попытался снова скомпилировать, обнаружилась ошибка E1696; он не может открыть gegelati.h.

Наконец, я попытался поместить файлы gegelati непосредственно в папку «stick-game / lib / gegelatilib» и включить их путь в «AdditionalIncludeDirectories». Я поместил изображение об этом (извините, это на испанском sh):

AdditionalIncludeDirectory

Вывод новой программы выдает мне 19 ошибок LNK2019 и 8 ошибок «LNK2001». Пример двух:

Error  LNK2019  símbolo externo "public: unsigned int __thiscall Instructions::Set::getNbInstructions(void)const " (?getNbInstructions@Set@Instructions@@QBEIXZ) sin resolver al que se hace referencia en la función _main

Error   LNK2001 símbolo externo "public: virtual class Learn::LearningEnvironment * __thiscall Learn::LearningEnvironment::clone(void)const " (?clone@LearningEnvironment@Learn@@UBEPAV12@XZ) sin resolver

Также, в начале, когда я устанавливаю doxygen для использования gegelati, он выдает несколько ошибок:

*Checking Build System
  Generating doxygen documentation in C:/Users/Acel Guilts/gegelati/bin/doc
CUSTOMBUILD : warning : tag INPUT: input source 'C:/Users/Acel' does not exist [C:\Users\Acel Guilts\gegelati\bin\doc\d
oc.vcxproj]
CUSTOMBUILD : warning : tag INPUT: input source 'Guilts/gegelati/gegelatilib' does not exist [C:\Users\Acel Guilts\gege
lati\bin\doc\doc.vcxproj]
CUSTOMBUILD : warning : tag INPUT: input source 'C:/Users/Acel' does not exist [C:\Users\Acel Guilts\gegelati\bin\doc\d
oc.vcxproj]
CUSTOMBUILD : warning : tag INPUT: input source 'Guilts/gegelati/doc' does not exist [C:\Users\Acel Guilts\gegelati\bin
\doc\doc.vcxproj]
CUSTOMBUILD : error : source C:/Users/Acel is not a readable file or directory... skipping. [C:\Users\Acel Guilts\gegel
ati\bin\doc\doc.vcxproj]
CUSTOMBUILD : error : source Guilts/gegelati/gegelatilib is not a readable file or directory... skipping. [C:\Users\Ace
l Guilts\gegelati\bin\doc\doc.vcxproj]
CUSTOMBUILD : error : source C:/Users/Acel is not a readable file or directory... skipping. [C:\Users\Acel Guilts\gegel
ati\bin\doc\doc.vcxproj]
CUSTOMBUILD : error : source Guilts/gegelati/doc is not a readable file or directory... skipping. [C:\Users\Acel Guilts
\gegelati\bin\doc\doc.vcxproj]*

Есть ли у вас какие-либо идеи о том, как решить проблема?

1 Ответ

0 голосов
/ 05 апреля 2020
  1. Скачать GEGELATI здесь и сгенерировать его Cmake решение
  2. Скачать stick-game Project здесь и сгенерировать его Cmake решение
  3. Добавьте путь от gegelati.h до Additional include directories. В моем случае G:\CMake\Sources\gegelati-master\gegelatilib\include\ (лучшее решение - использовать относительный путь с ../../.., но это не наша проблема)

enter image description here

Проверьте, что вы редактируете для текущей конфигурации (см. Красную стрелку) Найдите путь к сгенерированным GEGELATI библиотекам, в моем случае: G:\CMake\Build\gegelati\lib\Debug

enter image description here
6. Добавьте этот путь (G:\CMake\Build\gegelati\lib\Debug) к Additional library Directories

enter image description here

Добавить gtestd.lib и GEGELATId.lib на входе:

enter image description here

Теперь должно быть хорошо!

enter image description here

...