2015-08-08 3 views
1

Я пишу программу C++ из командной строки windows cmd и компилирую с помощью mingw (g++). Эта программа нуждается в нелинейном оптимизаторе, и NLOpt выглядит как хороший выбор. Я изучил C++ для курса uni, поэтому среда, которую я использовал, уже была настроена, у меня нет опыта в настройке библиотек и т. Д.Настройка NLOpt при работе с приглашением Windows cmd

До сих пор мои шаги были;

  1. Загрузите скомпилированные библиотеки DLL для 64-битных окон (что и я бегу) от here.

  2. Выполнить команду dlltool --input-def libnlopt-0.def --dllname libnlopt-0.dll --output-lib libnlopt-0.lib (from same page), которая прошла без ошибок.

Это создает файл .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 находятся в том же каталоге, что и друг с другом. Моя программа находится в другой папке. image of folder setup

Возможно, это действительно простой, извините, что беспокою вас об этом. Возможно, я не совсем одинок в своем невежестве, и это тоже поможет кому-то другому. Кроме того, я видел this question, но он касается установки на Visual Basic, и я не использую графический интерфейс, просто блокнот ++ и подсказку cmd.

Благодарим за помощь.

+0

Я не сделал это downvote .... это nlopt.h в том же каталоге? Можете ли вы опубликовать структуру файла? –

+0

Его в том же каталоге, что и nlopt.hpp, не то же самое, что и моя программа. – Jekowl

+0

Я думаю, что они должны быть такими же ... еще раз проверьте –

ответ

0

Если вы находитесь в windows и используете mingw: загруженный zip-архив уже содержит .dll и .lib. Поэтому вам не нужно запускать dlltool, который создает эти .lib, .dll от .def. Я думаю, что ваша проблема заключается в компиляции команды, используя g++, добавляя директивы include и library path.

C:\Files\Development\NLOpt2.4.2>g++ <path_of_source>.cc -o program.exe -L. -lnlopt -lm -I. -I<path_of_your_headers> 

Я encounted в прошлом, что порядок -I и -L может так важно попытаться изменить, если не работает. См. this tut и that tut, чтобы понять концепцию.

+0

, когда вы говорите ' Jekowl

+0

Если вы создадите его в папке оптимизатора, он содержит заголовок оптимизатора, поэтому '-I.' означает использование текущего каталога для заголовка оптимизатора. '-I ' означает использование каталога 'path_of_your_headers' для ваших собственных файлов заголовков. –

Смежные вопросы