在 windows cmd 提示符下工作时设置 NLOpt
Setting up NLOpt when working from windows cmd prompt
我正在 windows cmd 提示符下编写 C++ 程序,并使用 mingw (g++
) 进行编译。这个程序需要一个非线性优化器,NLOpt 看起来是个不错的选择。我是学c++的uni课程,所以我用的环境已经搭建好了,我没有搭建库等经验
到目前为止我的步骤是这样的;
从 here.
[= 下载 64 位 windows(我是 运行)的预编译 DLL 41=]
运行命令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.h
和 nlopt.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 以了解概念。
我正在 windows cmd 提示符下编写 C++ 程序,并使用 mingw (g++
) 进行编译。这个程序需要一个非线性优化器,NLOpt 看起来是个不错的选择。我是学c++的uni课程,所以我用的环境已经搭建好了,我没有搭建库等经验
到目前为止我的步骤是这样的;
从 here.
[= 下载 64 位 windows(我是 运行)的预编译 DLL 41=]运行命令
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.h
和 nlopt.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 以了解概念。