通过SWIG为C#编译Quantlib

任何人都有使用SWIG的经验吗? 我目前正在研究QuantLib并发现可以使用SWIG生成C#代码。 我们正在探索使用QuantLib和专有的闭源库(可能以.Net dlls的forms提供)来创建财务function组合库的选项。 我们的想法是将这两者结合起来创建一个统一的超级库。 我已经看到了QuantLib的.Net端口 ,但它似乎没有被主动维护(并且不完全确定实际移植了多少),所以我避免使用它。

这一步的第一步是评估生成可以在任何地方使用的库的难度,即MS office应用程序(通过VBA),控制台应用程序以及服务器端(例如Web应用程序)。 我认为这涉及COM Interop,但我不知道从哪里开始,或者我是否在正确的轨道上。

我没有使用C ++的经验; 和COM是我(我现在的流行语)的一些东西,我已经釉面了。 我知道与此主题相关的相关MSDN文章。

我正在寻找以下几行的帮助:

  1. 有没有在C#中使用QuantLib的替代方案?
  2. 关于我的开发环境,我需要什么?
  3. 有没有人知道通过SWIG编译的即用型QuantLib C#库? (一等奖=对我来说工作少)

任何帮助表示赞赏

编辑:除非提供更好的答案,否则我已接受我的答案作为正确答案。

因此看起来SWIG的C#绑定可用。 需要浏览 SVE存储库或SouceForge上的文件列表才能找到它们。

SWIG文件夹包含几个子文件夹,具体取决于您选择的语言,在我的情况下,C#是我感兴趣的文件夹。 您需要先下载SWIG,然后将可执行文件下载到系统PATH变量。

请务必阅读Readme.txt因为它包含有关还需要创建的QL_DIR环境变量的详细信息。

这可能是VS Express的限制 – 但解决方案文件包含C#项目和C ++项目,其中只能随时打开C#或C ++部分。 我的建议是为C ++和C#项目创建单独的解决方案文件。

来自.Net背景,lib文件,obj文件和与c ++相关的所有其他爵士乐需要一些时间才能使用。

为获得一个有效的C#库所采取的步骤

  1. 按照此处的说明下载QuantLib和Boost
  2. 从SourceForge下载QuantLib-SWIG文件夹的tar球。 编辑:主页上有一个zip下载 。 它列在子文件夹中。 检查Bindings下的v1.0文件夹
  3. 运行位于QuantLib-SWIG\CSharp文件夹中的swig.cmd文件(您需要先下载SWIG() – >这会为Quantlib生成cs包装器文件。
  4. 构建c ++项目NQuantLibc – 注意这里创建的dll需要随NQuantlib C#built dll一起提供。 它需要放在DLLImport属性可读的位置。 (有关位置列表,请参阅MSDN上的动态链接库搜索顺序 )
  5. 构建C#项目NQuantLib

关于我的开发环境,我需要什么? 似乎当前版本的QuantLib仅使用VS 2008构建。对VS 2010进行了一些更改,这会导致编译时出现一些问题。 C#项目构建正常,但只记得将目标框架从v4更改为v3.5更低。

注意:在编写本文时,C ++ SWIG项目的源文件中存在QL_HEX_VERSION编号问题。 运行swig.cmd打开VS项目,并将quantlib_wrap.cpp 344行quantlib_wrap.cpp

 #if QL_HEX_VERSION < 0x010001f0//0x010100f0 

我已经通过电子邮件发送了项目作者,等待反馈。 编辑: Luigi,正确告诉我这是SVN中代码的任何问题(我使用过)。 他建议应该使用QuantLib-SWIG-1.0.zip绑定。

Quantlib还在最新版本的VC ++ 2010上构建。