这几天心血来潮,想要使用C++ Builder(BCB)来编译QuantLib(QL)链接库。其实这个想法在我脑中至少已经有20年了。当年(2003)我第一次接触到QL时,就想用BCB来执行它,很可惜的是,在预设的架构下QL开发团队只提供Microsoft的Visual Studio(VS)方案,以及使用Linux下的Makefile方法。当年对于C++档案跨平台编译条件的设定方式经验不足,不知如何下手,所以只好放弃。

记得当年在台灣凯基证券时,开始接触到一些复杂的财务模型,需要进行模型参数市场校正,书上提到需要用到高阶的数值运算,非线性最适化。我当时发现,GNU数值运算链接库(图一),GNU Scientific Library(GSL),GSL - GNU Scientific Library - GNU Project - Free Software Foundation,就有这些函数可以呼叫,而且GSL是开源软件,可以看到程序代码。但可惜的是,Linux版有免费提供编译好的链接库,而且在Linux下自行编译也很简单,因为开发团队有提供Makefile,但在Windows版没有提供VS的方案,要付费才有设定好的VS方案与编译好的链接库。

当年只好用公司的预算,买了一套Windows版的GSL链接库来使用,其实心中有些不爽。不过他有提供一本纸本的手册(图二),到现在我都有留在手边,很有意思。后来我发现,QL里面就有这些高阶的数值运算功能,而且还跟金融模型的计算整合的很好,不过这也是我后来用Visual Studio把QL搞熟后,才知道的事情。另外,现在网络上也有善心人士,提供完整的方法,指导如何在Windows下,编译GSL,免费的。

在业界开发软件的人都知道,一个可以实用的软件,需要很多功能,不是只有模型计算的部分。例如,要有便利的GUI,方面User来使用操作,另外数据库的功能也不可少,尤其金融计算往往要处理一个部位的Portfolio。还有报表的输出也是必要的,这在银行界,更是不可少的东西。这些功能在QL项目中好像都没有。

当年QL项目发起时,团队是想要开发一个跨平台的金融计算核心链接库。然而,像GUI、Database、Report等功能,与系统平台的相依性太高,所以不在计划之中。但是实务上,像我在银行开发系统,我不可能回避这些需求,我需要找到一个好方案来开发系统。

回想1997年我刚进台灣中信银的交易室时,那时Borland刚推出Delphi这个号称VB杀手的RAD开发工具。我当年就用它开发了整个交易室TMU衍生商品的评价与风管系统。后来Borland又推出了C++ Builder(BCB)这个开发工具,它同时兼具GUI与Database整合功能,而且他是C++。我后来就用它与IT部门,合作开发了台湾第一套IRS/CCS前、中、后的整合作业风控系统。我觉得BCB真的很适合在Windows平台下开发严谨的计算系统。

也因此当我拿到QL时,我第一个想法就是能否在BCB下来编译他。当年知识经验不足,书本上也没说,不知如何动手。书上有说BCB的函数呼叫格式是OMF,VC是COFF,可以使用BCB提供的coff2omf.exe去转换,但试了很多次都不完全成功。主要是QL体积很大,如果只转换少量的链接库是可以的,但要全面转换就有问题。我的计算机功力到此就没辙了。

然而,在过去10多年的时间,我就乖乖的用VS,搭配一些GUI工具,如Qt与C++之父Bjarne书中推荐的FLTK图形链接库(Fast Light Toolkit - Fast Light Toolkit (FLTK)),来与QL协同工作。但其实就是觉得很别扭,跟BCB中直接使用VCL图形组件库不能比。这也是后来我决定把QL转写成C#的主要原因。

在VS的C#内,我们有很好用的视觉组件可以使用,几乎跟Delphi & BCB一样好用。其实如果知道过往Borland历史的人,应该都听过软件界传奇人物Anders Hejlsberg的名声,他是Delphi的开发者,后来跳巢的微软,主持C#与.NET的开发。所以两者基本上是血源相同,同一个爸爸。

前天又想到这件多年的往事,决定把QL拿出来,把核心的20多个档案,好好检视修改一下(图三),主要是跨平台的设定,放到BCB 10.3中跑一跑,没想到就编译成功,可以运行了(图四)。这20多个档案是我当年开始自我学习QL时,为了跑出一个简单的日期功能,精选的最核心档案,可以参考我之前自我学习(一)的文章。

突然觉得,我在QL上10多年的研究,真的是没有白费。QL这些跨平台的设定,现在看来都很简单。虽然我也都熟悉OpenCL & CUDA的.NET开发,但在BCB的C++下开发异质性平台如,GPU、FPGA的计算模块,相较于C#,自然是更为水乳交融的。

这时我想到当年利瓦伊写的宝兰传奇(图五),最后提到—“回到C/C++的王国”。我觉得对于追求高效能的财工人员而言,C/C++才是王者的Kingdom。能在BCB中发挥QL的强大功能,让人无比振奋。或许我可以考虑在网上维护一个BCB版本的QuantLib编译版本,不过这可能要跟QL团队沟通一下,等我之后有空再来处理此事啦!

使用C++ Builder编译QuantLib相关推荐

  1. C++ builder 编译加速问题

    很多伙伴使用 C++ builder & Dephi 开发软件,但是他的编译速度让人崩溃 整理了一些加速软件,在文末,供大家使用! NAME    IDE VERSION    FILE   ...

  2. Flash Builder编译的swf为什么在bin-debug下运行正常,复制到其他文件夹就不正常

    相信用Flash Builder/Flex Builder做开发的大部分开发者都遇到过这样的问题,编译的swf在bin-debug中打开(不是在IDE环境中调试,而是直接双击用Flash Player ...

  3. 杀毒软件对Platform Builder编译的影响

    今天在编译WinCE6.0的时候,总是出错,出错信息如下: EDITBIN : fatal error LNK1104: cannot open file 'C:\WINCE600\OSDesigns ...

  4. flash builder 编译配置

    一堆问题.现在说明. 1. 一个项目无法直接导入,因此要自己建个项目,然后再import 2. 编译的bug,配置如下: 3. 编译的时候,使用release,体积减小很多. 转载于:https:// ...

  5. Windows下 Cesium Terrain Builder(简称CTB) 编译安装指南

    Windows下 Cesium Terrain Builder 编译安装指南 基本流程 软件 资源(全部公开免费) 编译与配置GDAL 编译与配置zlib 编译与配置CTB 检测安装是否成功 常见错误 ...

  6. __stdcall in c++ builder

    VC默认为__stdcall,  BCB默认为__cdecl,  Delphi默认为__fastcall.  由于BCB使用Delphi的VCL库,  所以也必须使用__fastcall. 关键字 调 ...

  7. Laravel 学习笔记之 Query Builder 源码解析(下)

    说明:本文主要学习下Query Builder编译Fluent Api为SQL的细节和执行SQL的过程.实际上,上一篇聊到了\Illuminate\Database\Query\Builder这个非常 ...

  8. Laravel 学习笔记5.3之 Query Builder 源码解析(下)

    2019独角兽企业重金招聘Python工程师标准>>> 说明:本文主要学习下Query Builder编译Fluent Api为SQL的细节和执行SQL的过程.实际上,上一篇聊到了\ ...

  9. 使用Flash Builder 4.5进行多平台游戏开发

    转自:使用Flash Builder 4.5进行多平台游戏开发 目录 设置新项目 配置移动平台 优化技巧和诀窍 提交应用程序 延伸阅读 需求 预备知识 要求拥有使用Flash Builder开发项目的 ...

  10. QuantLIb C++金融工程库初体验

    QuantLib是一个有名的金融计算的C++库,能方便地用于计算许多金融模型和公式,包括简单的折现.年金.VAR甚至BS期权定价等. 本文对quantlib做了一个简单的使用初体验 源码下载 quan ...

最新文章

  1. python中choicebox_学习python的第四天笔记
  2. awk 和sed的用法介绍
  3. 【计算理论】计算复杂性 ( 证明团问题是 NP 完全问题 )
  4. 自动化C语言第一次月考试卷,145班《计算机组成与工作原理》第一次月考试卷...
  5. Windows phone 应用开发[2]-数据缓存
  6. c语言rand随机输出字母,菜鸟求助,写一个随机输出26个英文字母的程序
  7. 【数据结构与算法】之深入解析Base64编码的实现原理
  8. 牛客题霸 [分糖果问题] C++题解/答案
  9. 工作量不断增加的微软Azure,正缩小与亚马逊AWS的差距
  10. WiFi穿透能力甩对手两堵墙 荣耀9X新特性令人侧目
  11. 递归 dfs 记忆化搜索 动态规划
  12. Windows下给Git配置SSH
  13. Linux复习-目录及其操作
  14. python 折线图拐角平滑_python利用插值法对折线进行平滑曲线处理
  15. [IDEA]项目web文件夹找不到
  16. airtest自动化测试
  17. 武汉东湖学院计算机科学学院团委,【计算机科学学院】
  18. DSP TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制时的噪声抑制
  19. 电机专用MCU芯片LCM32F037系列内容介绍
  20. 如何提升网站关键词的优化排名?

热门文章

  1. virtualbox 设置静态IP
  2. CET-6--2018.6--2
  3. Scala基础:类和构造器
  4. 德国地学研究中心到国家基础地理信息中心作学术交流
  5. (转)什么是BD,怎么做一个好BD
  6. Guava学习之Splitter
  7. HDU2881 Jack's struggle (LIS)
  8. CCS导入工程时报错“overlaps the location of another project”解决办法
  9. emacs java_Emacs配置与使用
  10. 电脑遇到闪屏问题怎么解决