Я пишу программу на C ++ из командной строки Windows cmd и компилирую с помощью mingw (g++
). Эта программа нуждается в нелинейном оптимизаторе и NLOpt выглядит как хороший выбор. Я изучил c ++ для курса Uni, поэтому среда, которую я использовал, уже была настроена, у меня нет опыта в настройке библиотек и т. Д.
До сих пор мои шаги были;
Загрузите предварительно скомпилированные библиотеки DLL для 64-битных окон (именно это я и запускаю) из Вот.
Запустите команду dlltool --input-def libnlopt-0.def --dllname libnlopt-0.dll --output-lib libnlopt-0.lib
(от та же страница), который работал без ошибок.
Это создает файл .hpp, однако, когда я пытаюсь #include
файл, который я получаю
In file included from optimiseDogs.cc:9:0:
C:\Files|Development\NLOpt2.4.2\nlopt.hpp:29:19: fatal error: nlopt.h: Nosuch file or directory
#include <nlopt.h>
nlopt.h
а также nlopt.hpp
находятся в одном каталоге друг с другом. Моя программа находится в другой папке.
Это, наверное, очень просто, извините, что беспокою вас. Возможно, я не совсем одинок в своем невежестве, и это поможет кому-то еще. Кроме того, я видел этот вопрос, но это касается установки на Visual Basic, и я не использую графический интерфейс, просто notepad ++ и приглашение cmd.
Спасибо за помощь.
Если вы находитесь в windows
и используя mingw
: скачанный zip архив уже содержит .dll
а также .lib
файлы. Так что вам не нужно бежать dlltool
который создает эти .lib
,.dll
от .def
, Я думаю, что ваша проблема компиляции команды с помощью g++
добавление директив include и path к библиотекам.
C:\Files\Development\NLOpt2.4.2>g++ <path_of_source>.cc -o program.exe -L. -lnlopt -lm -I. -I<path_of_your_headers>
В прошлом я считал, что -I
а также -L
может иметь значение, поэтому попробуйте изменить, если не работает.
Посмотри пожалуйста этот тут а также что тут понять концепцию.