Компиляция Quantlib через SWIG для C#
У кого-нибудь есть опыт использования SWIG? В настоящее время я изучаю QuantLib и вижу, что код C# может быть сгенерирован с помощью SWIG. Мы изучаем варианты создания объединенной библиотеки финансовых функций с использованием QuantLib и проприетарной библиотеки с закрытым исходным кодом (которая, вероятно, будет доступна как.Net dll). Идея состоит в том, чтобы объединить оба этих элемента для создания единой супер-библиотеки. Я видел порт.Net QuantLib, но кажется, что он не поддерживается активно (и не совсем уверен, сколько было на самом деле портировано), поэтому я избегаю его.
Шаг 1 этого состоит в том, чтобы оценить сложность создания библиотеки, которую можно использовать "где угодно", то есть приложения MS Office (через VBA), консольные приложения, а также на стороне сервера (например, веб-приложения). Я предполагаю, что это связано с COM Interop, но я понятия не имею, с чего начать или я даже на правильном пути.
У меня нет опыта работы с C++; и COM - кое-что (модное слово для меня в настоящее время), что я застеклил. Мне известны соответствующие статьи MSDN, связанные с этой темой.
Я ищу помощь по следующим направлениям:
- Есть ли альтернативы использованию QuantLib в C#?
- Что мне нужно в отношении среды разработки?
- Кто-нибудь знает о готовой к использованию библиотеке 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#
- Загрузите QuantLib и Boost, как описано здесь
- Загрузите tar- архив папки QuantLib-SWIG с SourceForge. Редактировать: есть загрузка zip, доступная на домашней странице. Это указано в подпапках. Проверьте папки v1.0 под
Bindings
- Запустить
swig.cmd
файл находится вQuantLib-SWIG\CSharp
папка (сначала нужно загрузить SWIG () -> это создаст файлы оболочки cs для Quantlib. - Сборка проекта C++
NQuantLibc
- обратите внимание, что созданная здесь dll должна всегда поставляться с dll, встроенным в NQuantlib C#. Это должно быть помещено в местоположение, которое читаетсяDLLImport
приписывать. (См. Порядок поиска библиотеки Dynamic-Link в MSDN для получения списка местоположений) - Создайте проект 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 с последней версией.