在 windows cmd 提示符下工作时设置 NLOpt

Setting up NLOpt when working from windows cmd prompt

我正在 windows cmd 提示符下编写 C++ 程序,并使用 mingw (g++) 进行编译。这个程序需要一个非线性优化器,NLOpt 看起来是个不错的选择。我是学c++的uni课程,所以我用的环境已经搭建好了,我没有搭建库等经验

到目前为止我的步骤是这样的;

  1. here.

    [= 下载 64 位 windows(我是 运行)的预编译 DLL 41=]
  2. 运行命令dlltool --input-def libnlopt-0.def --dllname libnlopt-0.dll --output-lib libnlopt-0.lib(来自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.hnlopt.hpp 彼此在同一目录中。我的程序在不同的文件夹中。

这可能是非常基础的,很抱歉打扰您。也许我并不完全孤单,这对其他人也有帮助。另外,我看过 this question,但它涉及在 visual basic 上安装,我没有使用 GUI,只是使用 notepad++ 和 cmd 提示符。

感谢您的帮助。

如果您在 windows 并且正在使用 mingw:下载的 zip 存档已经包含 .dll.lib 文件。因此,您不需要 运行 dlltool.def 创建这些 .lib.dll。我认为您的问题是使用 g++ 添加包含和库路径指令来编译命令。

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 的顺序可能很重要,所以如果不起作用请尝试更改。 请参阅 this tut and that tut 以了解概念。