1

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

到目前为止,我的步骤是;

  1. 从这里下载 64 位 Windows 的预编译 DLL(这是我正在运行的)。

  2. 运行命令dlltool --input-def libnlopt-0.def --dllname libnlopt-0.dll --output-lib libnlopt-0.lib(来自同一页面),该命令运行没有错误。

这会创建一个 .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彼此位于同一目录中。我的程序位于不同的文件夹中。 文件夹设置的图像

这可能是非常基本的,很抱歉给您带来麻烦。也许我的无知并不完全是我一个人,这也会对其他人有所帮助。另外,我已经看到了这个问题,但它涉及在 Visual Basic 上安装,而且我没有使用 GUI,只使用 notepad++ 和 cmd 提示符。

谢谢您的帮助。

4

1 回答 1

0

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

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可能很重要,因此如果不起作用,请尝试更改。请参阅这个 tut那个 tut来理解这个概念。

于 2015-08-17T16:00:04.653 回答