Компиляция Quantlib через SWIG для С#

У кого-нибудь есть опыт использования SWIG? В настоящее время я изучаю QuantLib и увидел, что код С# может быть сгенерирован с использованием SWIG. Мы изучаем варианты создания комбинированной библиотеки финансовых функций с использованием QuantLib и запатентованной библиотеки с закрытым исходным кодом (которая, вероятно, будет доступна как DLL.Net). Идея состоит в том, чтобы объединить оба эти элемента для создания единой супер-библиотеки. Я видел . Чистый порт QuantLib, но кажется, что он не активно поддерживается (и не совсем уверен, сколько фактически было портировано), поэтому я избегаю этого.

Этап 1 состоит в том, чтобы оценить сложность создания библиотеки, которая может быть использована "где угодно", то есть офисные приложения MS (через VBA), консольные приложения, а также серверные (например, веб-приложения). Я предполагаю, что это связано с COM Interop, но я не знаю, с чего начать, или если я даже на правильном пути.

У меня нет опыта работы с С++; и COM - это что-то (моё слово в данный момент), которое я застекл. Я знаю о соответствующих статьях MSDN, связанных с этой темой.

Я ищу помощь по следующим ссылкам:

  • Существуют ли альтернативы использованию QuantLib в С#?
  • Что касается моей среды разработки, что мне нужно?
  • Кто-нибудь знает о готовой к использованию библиотеке QuantLib С#, скомпилированной через SWIG? (первый приз = меньше работы для меня)

Любая помощь ценится?

Изменить: Я принял свой ответ как правильный, если нет лучшего.

Ответ 1

Итак, похоже, что привязки С# для SWIG доступны. Чтобы найти их, нужно просмотреть репозиторий SVN или список файлов на SouceForge.

Папка SWIG содержит несколько подпапок, в зависимости от вашего языка выбора, в моем случае С# был тем, который меня интересовал. Сначала вам нужно загрузить SWIG, а это исполняемый файл в системную переменную PATH.

Обязательно прочтите Readme.txt, так как он содержит сведения о переменной среды QL_DIR, которую также необходимо создать.

Это может быть ограничение VS Express, но файл решения содержит как проект С#, так и проект С++, из которых в любой момент можно открыть только С# или С++. Мое предложение было бы создать отдельные файлы решений для проектов С++ и С#.

Исходя из фона .Net, файлы lib, obj файлы и все остальные джазы, связанные с С++, занимают некоторое время.

Шаги, предпринятые для получения рабочей библиотеки С#

  • Загрузите QuantLib и Boost, как описано здесь
  • Загрузите tar-шар папку QuantLib-SWIG из SourceForge. Изменить: На домашней странице есть загрузка zip. Он указан в подпапках. Проверьте папки v1.0 под Bindings
  • Запустите файл swig.cmd, расположенный в папке QuantLib-SWIG\CSharp (вам нужно загрузить SWIG first() → , который генерирует файлы оболочки cs для Quantlib.
  • Создайте проект С++ NQuantLibc - обратите внимание, что созданная здесь dll должна всегда поставляться с dll NQuantlib С#. Он должен быть помещен в место, которое читается атрибутом DLLImport. (См. Заказ поиска динамической ссылки в MSDN для списка местоположений)
  • Сборка проекта С# NQuantLib

Что касается моей среды разработки, что мне нужно? <Удаp > Похоже, что текущая версия QuantLib строится только с VS 2008. В VS 2010 были некоторые изменения, которые вызывают некоторые проблемы с компиляцией. Проект С# строит отлично, однако просто не забудьте изменить целевую структуру с v4 на v3.5 ниже.

Примечание. В качестве времени написания этой проблемы возникла проблема с номером QL_HEX_VERSION в исходных файлах проекта SWIG С++. После запуска swig.cmd откройте проект VS и измените строку 344 quantlib_wrap.cpp на

#if QL_HEX_VERSION < 0x010001f0//0x010100f0

Я отправил по электронной почте автора проекта и ожидал обратной связи. Изменить: Луиджи, правильно сообщил мне, что это какая-то проблема с кодом в SVN (который я использовал). Он предположил, что следует использовать привязки QuantLib-SWIG-1.0.zip. Забастовкa >

Quantlib также основывается на VС++ 2010 с последней версией.