Ответ 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 с последней версией.