【发布时间】:2016-11-22 04:15:16
【问题描述】:
我最近开始在 Visual Studio 中使用 Quantlib。我已成功安装并运行 Quantlib。我还设法使用 Quantlib 对 Swap 和 Swaption 等产品进行定价。掉期价格与我自己的 VBA 计算器非常匹配(
虽然我可以在 Quantlib 安装文件夹中手动定位源文件,但对调试没有帮助。所以我的问题是,有什么方法可以在我的项目中单步执行 Quantlib 源代码?
例如,我目前对BlackSwaptionEngine中的详细计算步骤感兴趣。我只需要设置掉期和定价引擎,并使用 Quantlib NPV 函数得到结果:
boost::shared_ptr<Exercise> europeanExercise(new EuropeanExercise(expiryDate));
Swaption testSwaption(swap, europeanExercise);
boost::shared_ptr<PricingEngine> swaptionEngine(new BlackSwaptionEngine(forwardingTermStructure, Vol));
testSwaption.setPricingEngine(swaptionEngine);
double res = testSwaption.NPV();
是的,我可以得到结果。但我也想知道 BlackSwaptionEngine 内部的中间结果。因此,逐步查看源代码似乎是找出这一点的好方法。如何在我的项目中包含 Quantlib 源代码进行调试?
感谢任何帮助。非常感谢。
【问题讨论】:
-
您需要获取或构建调试版本并链接到该版本。没有办法(我见过或可能想象过)将非调试库与源文件结合起来以“添加”调试能力。顺便说一句,它现在被称为
std::shared_ptr,已经在 C++11 中标准化,所以你应该使用那个版本。 -
不,他不应该。该库仍然使用 C++03 和
boost::shared_ptr,因为相当多的用户仍然无法说服他们的 IT 部门将他们的编译器升级到最新版本。银行就是那样有趣。 -
关于调试:@underscore_d 所说的。你从哪里得到预建库?你可以自己构建它吗?
-
@LuigiBallabio 哦,我没有注意到库按原样接收了
boost指针(然后可能会绊倒我无意识的、明显错误的假设,即智能指针提供了到@987654326 的转换@!D:) -
@underscore_d 感谢您的快速回复。您是否有机会就“针对调试版本的链接”进行更多解释。我想我在调试模式下构建了库。我按照此链接 (quantlib.org/install/vc10.shtml) 设置参考。基本上,只需在 VC++ 目录中设置路径即可。我还在 Visual Studio 的调试中禁用了“仅启用我的代码”。但是,我能看到的仍然是那些头文件。