2015-08-08 56 views
1

我正在從windows cmd提示符下編寫一個C++程序,並使用mingw(g++)進行編譯。這個程序需要一個非線性優化器,並且NLOpt看起來是個不錯的選擇。我學習了一個單一的C++,所以我使用的環境已經建立,我沒有設置庫等的經驗。從windows cmd提示符工作時設置NLOpt

到目前爲止我的步驟已經;

  1. 下載64位Windows預編譯的DLL(這是我運行的是什麼)從here

  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都在同一目錄對方。我的程序位於不同的文件夾中。 image of folder setup

這可能是非常基本的,很抱歉給您帶來麻煩。也許我並不完全孤單,我的無知也會幫助其他人。另外,我已經看到了this question,但是它處理在visual basic上的安裝,而且我沒有使用GUI,只是使用notepad ++和cmd提示符。

謝謝你的幫助。

+0

我沒有downvote它....是在相同的目錄nlopt.h?你可以發佈文件結構嗎? –

+0

它與nlopt.hpp位於同一目錄,與我的程序不一樣。 – Jekowl

+0

我認爲他們應該是一樣的...再次檢查 –

回答

0

如果您在windows和使用mingw:下載的zip存檔已包含.dll.lib文件。所以你不需要運行dlltool,它會從.def創建這些.lib,.dll。我認爲你的問題是使用g++編譯命令,添加include和庫路徑指令。

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 tutthat tut以瞭解此概念。

+0

當你說' Jekowl

+0

如果您在優化器文件夾中構建它,它將包含優化器頭文件,所以'-I.'表示使用優化器頭文件的當前目錄。 '-I '表示爲你自己的頭文件使用'path_of_your_headers'目錄。 –