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

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

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

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

Я ищу помощь по следующим направлениям:

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

Любая помощь приветствуется?

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

1 ответ

Решение

Поэтому может показаться, что привязки C# для SWIG доступны. Нужно просмотреть 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. Загрузите tar- архив папки QuantLib-SWIG с SourceForge. Редактировать: есть загрузка zip, доступная на домашней странице. Это указано в подпапках. Проверьте папки v1.0 под Bindings
  3. Запустить swig.cmd файл находится в QuantLib-SWIG\CSharp папка (сначала нужно загрузить SWIG () -> это создаст файлы оболочки cs для Quantlib.
  4. Сборка проекта C++ NQuantLibc - обратите внимание, что созданная здесь dll должна всегда поставляться с dll, встроенным в NQuantlib C#. Это должно быть помещено в местоположение, которое читается DLLImport приписывать. (См. Порядок поиска библиотеки Dynamic-Link в MSDN для получения списка местоположений)
  5. Создайте проект C# NQuantLib

Что мне нужно в отношении среды разработки? Кажется, что текущая версия QuantLib собирается только с VS 2008. В VS 2010 произошли некоторые изменения, которые вызвали некоторые проблемы с компиляцией. Проект на C# работает нормально, но не забывайте менять Target Framework с v4 на v3.5 и ниже.

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

#if QL_HEX_VERSION < 0x010001f0//0x010100f0

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

Quantlib также использует VC++ 2010 с последней версией.

Другие вопросы по тегам