在我的 C++ 程序中使用 quantlib 函式
我想在我自己的 C++ 程式碼中包含用於選項希臘計算的 QuantLib 函式。我的問題是:我可以只包含這些功能嗎?我不想用他們剩下的東西。
我顯然不能只寫:
QuantLib::europeanOption.delta()
我已經包含了標題:
#include <ql/quantlib.hpp> using namespace QuantLib;
我希望他們有一些好的文件。
這是題外話,可能屬於 StackOverflow,但在這裡。
1.編譯QuantLib
最好的方法是使用程序→Microsoft Visual Studio→Visual Studio 工具下的快捷方式打開*Visual Studio 命令提示符。*現在,您需要導航到
QuantLib
您擁有 QuantLib 的文件夾內的文件夾(還有其他文件夾,例如QuantLibXL
- 這不是您需要的文件夾。現在,通過執行以下命令編譯整個 QuantLib
msbuild /t:Rebuild /p:Configuration=Release QuantLib_vc10.sln
:在此文件夾中,如果您查看該
lib
文件夾,您將獲得一個名為 lib 的文件QuantLib-vc<VER>-mt.lib
和一個帶有-gd
後綴的相應文件。您需要這些庫以及標頭。2.配置標頭
右鍵點擊項目並選擇屬性。現在,確保在視窗左上角的配置下拉列錶框中選擇所有配置。首先,導航到 ConfigurationProperties→C/C++→General。在Additional Include Directories中,添加 QuantLib 目錄的路徑。如果您添加該
<QL Root>\QuantLib
目錄,您將能夠使用諸如#include <ql/someheader.hpp>
. 如果你做得正確並且你使用的是 VS2010,IntelliSense 將立即啟動,這意味著如果你輸入#include <ql/
,VS 會顯示一個帶有標題的幫助列表(這很有用)。3.配置庫引用
現在,向下導航到配置屬性→連結器→正常。在Additional Library Directories中,添加 QuantLib
\lib
目錄的路徑。現在向下移動到連結器標題下的輸入標題。編輯Additional Dependencies欄位,在其前面加上 QuantLib 庫文件的名稱——您需要指定需要包含的文件的文件名(不包括完整路徑)。該文件用於發布版本和調試版本。如果你把這些搞砸了,你會得到錯誤。
.lib``-mt.lib``-mt-gd.lib
4.執行它
到現在為止,假設你的 VS
\include
文件夾中有 boost 庫,下面的程式碼應該可以正常編譯和執行://first line is required in .NET #include "stdafx.h" #include <iostream> #include <ql/quantlib.hpp> using namespace std; using namespace QuantLib; void main() { boost::shared_ptr<Money> m(new Money); cout << m->value() << endl; getchar(); }
您對程式、動態連結、Makefile 和其他方面的自在程度如何?
本質上,這裡沒有魔法。QL 有一個非常自由的許可證,你“僅僅”必須設置你的項目,以便它找到
- 編譯期間的 quantlib 標頭檔(以及因此的 Boost 標頭檔)
- 連結期間的 quantlib 庫
並且這兩個都可以通過分別呼叫
quantlib-config
適當的標誌--clags
和來自動化--libs
。這實際上與連結到任何其他外部庫沒有什麼不同。