Я использовал библиотеку NLopt в мои проекты на Фортране, и у меня нет проблем с его запуском в системе Linux. Теперь я только начал использовать Visual Studio в Windows для написания своих программ на Фортране. Однако у меня возникли некоторые трудности с использованием библиотеки NLopt в Windows. Я использую Visual Studio 2013 и Intel Parallel Studio XE 17 на своем компьютере.
Вот что я сделал и проблемы, с которыми я столкнулся:
Я скачал версию библиотеки NLopt для Windows (64-разрядную) с ее веб-сайта. Затем я использую командную строку разработчика для VS, чтобы выполнить
lib /def:libnlopt-0.def \MACHINE:x64
, и он создает файлы .lib и .exp в той же папке.Я создал проект Fortran в Visual Studio и использую код, который работал под Linux. В Visual Studio я добавил путь к .lib и .exp в «Дополнительные каталоги включения» и «Дополнительные каталоги библиотек» в свойство проекта. Я также добавил «libnlopt-0.lib» и «libnlopt-0.exp» в «Дополнительные зависимости».
Когда я компилирую проект, он терпит неудачу с ошибками:
1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_CREATE referenced in function MOD_NLOPT_mp_SUB_NLOPT 1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_SET_FTOL_ABS referenced in function MOD_NLOPT_mp_SUB_NLOPT 1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_SET_FTOL_REL referenced in function MOD_NLOPT_mp_SUB_NLOPT 1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_SET_XTOL_ABS referenced in function MOD_NLOPT_mp_SUB_NLOPT 1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_SET_XTOL_REL referenced in function MOD_NLOPT_mp_SUB_NLOPT 1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_SET_LOWER_BOUNDS referenced in function MOD_NLOPT_mp_SUB_NLOPT 1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_SET_UPPER_BOUNDS referenced in function MOD_NLOPT_mp_SUB_NLOPT 1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_SET_MAX_OBJECTIVE referenced in function MOD_NLOPT_mp_SUB_NLOPT 1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_ADD_INEQUALITY_CONSTRAINT referenced in function MOD_NLOPT_mp_SUB_NLOPT 1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_OPTIMIZE referenced in function MOD_NLOPT_mp_SUB_NLOPT 1>mod_nlopt.obj : error LNK2019: unresolved external symbol NLO_DESTROY referenced in function MOD_NLOPT_mp_SUB_NLOPT
Затем я последовал предложениям [здесь] (http://nlopt-discuss.ab-initio.mit.narkive.com/M3vzZMYA/nlopt-linked-to-intel-fortran-compiler-for-windows) и добавил
/names:lowercase
в командную строку, и теперь он компилируется нормально, но с одним предупреждением:libnlopt-0.exp : warning LNK4070: /OUT:libnlopt-0.dll directive in .EXP differs from output filename 'x64\Release\baseline.exe'; ignoring directive
Хотя он компилируется нормально, я все еще не могу запустить свой скомпилированный код. Когда я запускаю его, мой компьютер говорит мне, что
This APP cannot run on your PC. To find a version for your PC, check with the software published
. Затем в командном окне отображаетсяAccess denied
, после чего программа останавливается.
Я действительно не знаю, что я могу сделать дальше, чтобы мой код заработал. Я знаю, что многие люди используют NLopt в Windows.
/names:lowercase
, упомянутого выше. - person shanmu .S   schedule 09.04.2017