6

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

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

我没有使用 C++ 的经验;和 COM 是我已经忽略的东西(目前对我来说是一个流行词)。我知道与此主题相关的相关 MSDN 文章。

我正在寻求以下方面的帮助:

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

任何帮助表示赞赏?

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

4

1 回答 1

9

因此,SWIG 的 C# 绑定似乎可用。需要浏览SVN 存储库或 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 下载。它列在子文件夹中。检查下的v1.0文件夹Bindings
  3. 运行swig.cmd位于QuantLib-SWIG\CSharp文件夹中的文件(您需要先下载 SWIG()--> 这将为 Quantlib 生成 cs 包装文件。
  4. 构建 c++ 项目NQuantLibc- 注意这里创建的 dll 需要始终与 NQuantlib C# 构建的 dll 一起提供。它需要放置在 DLLImport属性可读的位置。(有关位置列表,请参阅MSDN 上的动态链接库搜索顺序)
  5. 构建 C# 项目NQuantLib

关于我的开发环境,我需要什么? 当前版本的 QuantLib 似乎仅使用 VS 2008 构建。VS 2010 发生了一些变化,导致编译出现一些问题。C# 项目构建良好,但只需记住将目标框架从 v4 更改为 v3.5 以降低。

注意:在撰写本文时QL_HEX_VERSION,C++ SWIG 项目的源文件中的数字存在问题。运行swig.cmd打开 VS 项目后,将第 344 行更改quantlib_wrap.cpp

#if QL_HEX_VERSION < 0x010001f0//0x010100f0

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

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

于 2010-09-16T13:47:02.490 回答