任何人都有使用SWIG的经验吗?我目前正在研究QuantLib,看到可以使用SWIG生成C#代码。我们正在探索使用QuantLib和专有的封闭源代码库(可能会以.Net dll形式提供)创建财务功能组合库的选项。这个想法是将两者结合起来以创建一个统一的 super 库。我已经看到了.Net port of QuantLib,但是似乎它没有被积极维护(并且不能完全确定实际移植了多少),因此我避免使用它。

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

我没有使用C++的经验; COM是我眼前一亮的东西(此刻对我来说是个时髦的词)。我知道与此主题相关的相关MSDN文章。

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

  • 在C#中有使用QuantLib的替代方法吗?
  • 关于我的开发环境,我需要什么?
  • 有人知道通过SWIG编译的现成的QuantLib C#库吗? (一等奖=减少我的工作量)

  • 任何帮助表示赞赏吗?

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

    最佳答案

    因此,似乎可以使用SWIG的C#绑定(bind)。需要浏览 SVN repository or list of files on SouceForge来找到它们。

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

    确保阅读Readme.txt,因为它包含有关也需要创建的QL_DIR环境变量的详细信息。

    这可能是VS Express的局限性-但解决方案文件同时包含C#项目和C++项目,它们中的C#或C++部分都可以随时打开。我的建议是为C++和C#项目创建单独的解决方案文件。

    来自.Net背景,lib文件,obj文件以及与c++相关的所有其他爵士乐都需要花费一些时间来习惯。

    为获得可用的C#库而采取的步骤

  • here
  • 所述下载QuantLib和Boost
  • 下载QuantLib-SWIG folder from SourceForge的tar球。 编辑:主页上有一个download of the zip。它在子文件夹中列出。检查Bindings
  • 下的v1.0文件夹
  • 运行位于swig.cmd文件夹中的QuantLib-SWIG\CSharp文件(您需要下载SWIG first()->这将为Quantlib生成cs包装文件。
  • 生成c++项目NQuantLibc-注意,此处创建的dll必须始终与NQuantlib C#生成的dll一起提供。需要将其放置在DLLImport属性可以读取的位置。 (有关位置列表,请参见Dynamic-Link Library Search Order on MSDN)
  • 生成C#项目NQuantLib

  • 关于我的开发环境,我需要什么?

    似乎QuantLib的当前版本仅使用VS 2008进行构建。VS 2010进行了一些更改,从而导致了一些编译问题。 C#项目的构建很好,但是只要记住将目标框架从v4更改为v3.5即可。

    注意:在撰写本文时,C++ SWIG项目的源文件中的QL_HEX_VERSION号存在问题。运行swig.cmd后,打开VS项目,并将quantlib_wrap.cpp的第344行更改为
    #if QL_HEX_VERSION < 0x010001f0//0x010100f0
    

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

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

    关于c# - 通过SWIG为C#编译Quantlib,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3334011/

    10-11 19:41