在Windows上带有Visual Studio的Fortran项目中使用Nlopt库
我一直在Fortran项目中使用,在Linux系统下运行它没有问题。现在我刚开始在Windows上使用Visual studio编写Fortran程序。但是,我在Windows上使用NLopt库时遇到一些困难。我正在计算机上使用Visual Studio 2013和英特尔并行Studio XE 17 以下是我所做的工作和遇到的问题:在Windows上带有Visual Studio的Fortran项目中使用Nlopt库,windows,visual-studio,fortran,nlopt,Windows,Visual Studio,Fortran,Nlopt,我一直在Fortran项目中使用,在Linux系统下运行它没有问题。现在我刚开始在Windows上使用Visual studio编写Fortran程序。但是,我在Windows上使用NLopt库时遇到一些困难。我正在计算机上使用Visual Studio 2013和英特尔并行Studio XE 17 以下是我所做的工作和遇到的问题: 我从其网站下载了NLopt库的Windows版本(64位)。然后,我使用VS的开发人员命令提示符执行lib/def:libnlopt-0.def\MACHINE:x
lib/def:libnlopt-0.def\MACHINE:x64
,并在同一文件夹下创建一个.lib和.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
/names:lowercase
,现在它可以正常编译,但有一个警告:
libnlopt-0.exp : warning LNK4070: /OUT:libnlopt-0.dll directive in .EXP differs from output filename 'x64\Release\baseline.exe'; ignoring directive
此应用程序无法在你的电脑上运行。要查找你电脑的版本,请查看发布的软件
。然后命令窗口显示拒绝访问
,然后程序停止我真的不知道下一步我能做什么来让我的代码工作。我知道有很多人在Windows中使用NLopt。我刚刚想出了解决方案。对于上面的第二步,我应该只将“libnlopt-0.lib”而不是“libnlopt-0.exp”放在VisualStudio项目属性的“附加依赖项”中。之后,我将“libnlopt-0.dll”复制到程序的工作目录中。这样我的程序就可以毫无问题地运行了 你有哪个Windows版本?是64位吗?编译命令看起来如何?我使用的是64位版本的Windows 10。Visuao Studio使用标准编译选项完成编译,但上面提到的
/names:lowercase
选项除外。