Quantlib 1.14 и Quantlib1.14-SWIG: версии Visual C++ до VC++10 (2010) больше не поддерживаются.

Я скачал архивы как для quantlib 1.14, так и для quantlib 1.14-swig. Папка quantlib в SWIG содержит файл quantlib_wrap.cpp. Но установка жалуется на версию MSC. Вот новая ошибка. Этот пост связан с еще один пост об отсутствующем сообщении об ошибке quantlib_wrap.cpp.

C:\Users\Public\3rdParty\Libraries\QuantLib-1.14\ql/config.msvc.hpp(29) : fatal error C1189: #error :  "versions of Visual C++ prior to VC++10 (2010) are no longer supported"
error: command 'C:\\Users\\U435169\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\cl.exe' failed with exit status 2.

Используйте 1.13. VC9 больше не поддерживается. — Луиджи Баллабио

Я тоже попробую 1.13. Но на самом деле у меня установлен VC++ 14.0. Я использую VS2015 для компиляции quantlib. Не уверен в истинной причине.

Я попробовал 1.13 и столкнулся с ошибкой связывания. Я думаю, это может быть из-за несоответствия между компиляцией quantlib-swig (VC9.0) и quantlib (VC14). Если это так, как мы можем контролировать компилируемую версию quantlib-swig? Есть ли возможность это контролировать?

C:\Users\U435169\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -D__WIN32__ -DWIN32 -DNDEBUG -D_WINDOWS -DNOMINMAX -ID:\packages\Python27\include -ID:\packages\Python27\PC -IC:\Users\Public\3rdParty\Libraries\QuantLib-1.13 -IC:\Users\Public\MSYS2\mingw32\include /TpQuantLib/quantlib_wrap.cpp /Fobuild\temp.win32-2.7\Release\QuantLib/quantlib_wrap.obj /GR /FD /Zm250 /EHsc /bigobj /MD
quantlib_wrap.cpp
C:\Users\U435169\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:D:\packages\Python27\libs /LIBPATH:D:\packages\Python27\PCbuild /LIBPATH:D:\packages\Python27\PC\VS9.0 /LIBPATH:C:\Users\Public\3rdParty\Libraries\QuantLib-1.13\lib /EXPORT:init_QuantLib build\temp.win32-2.7\Release\QuantLib/quantlib_wrap.obj /OUT:build\lib.win32-2.7\QuantLib\_QuantLib.pyd /IMPLIB:build\temp.win32-2.7\Release\QuantLib\_QuantLib.lib /MANIFESTFILE:build\temp.win32-2.7\Release\QuantLib\_QuantLib.pyd.manifest /subsystem:windows /machine:x86
LINK : fatal error LNK1104: cannot open file 'QuantLib-vc90-mt.lib'
error: command 'C:\\Users\\U435169\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\link.exe' failed with exit status 1104

person MagicFatto    schedule 20.11.2018    source источник
comment
В чем вопрос? Какую версию MSVC вы используете?   -  person NathanOliver    schedule 20.11.2018
comment
Добро пожаловать в Stack Overflow! Пожалуйста, пройдите тур и, в частности, прочитайте Как спросить. Очень неясно, в чем заключается ваш вопрос или чего вы ожидаете от решения. В конце концов, сообщение об ошибке довольно ясно.   -  person Ulrich Eckhardt    schedule 20.11.2018
comment
Не закончил вопрос, и браузер неожиданно закрылся. Отредактируйте его для ясности.   -  person MagicFatto    schedule 20.11.2018


Ответы (1)


Я предполагаю, что вы компилируете модуль для Python 2.7?

Python 2.7 для Windows скомпилирован с помощью VC++ 2008 и также использует его для компиляции внешних модулей. Если вместо этого вы можете переключиться на Python 3.5 или более позднюю версию, будет использоваться ваша установка VC++ 2015.

person Luigi Ballabio    schedule 20.11.2018
comment
Ты прав! При попытке 3.6.1 столкнулся с ошибкой отступа. Я видел подобные проблемы, опубликованные 10 месяцев назад, и вы предложили ему написать электронное письмо соответствующим разработчикам. Не знаю, как разрешилась его проблема. (C:\ProgramData\Anaconda3) C:\Users\Public\3rdParty\Libraries\QuantLib-SWIG-1.14\Python>python setup.py build Файл setup.py, строка 2 Copyright (C) 2000, 2001, 2002, 2003 RiskMap srl ^ IndentationError: неожиданный отступ - person MagicFatto; 21.11.2018
comment
Кстати, в Python 2.7.3 этой проблемы нет, и я никогда не модифицировал файл setup.py. Первые три строки: # -*- coding: iso-8859-1 -*- """ Copyright (C) 2000, 2001, 2002, 2003 RiskMap srl - person MagicFatto; 21.11.2018
comment
Кажется, что Python не распознает вторую строку (он сообщает строку 3 как строку 2). Попробуйте добавить пустую строку между строками 1 и 2. - person Luigi Ballabio; 21.11.2018
comment
И в любом случае: вы пытались запустить pip install QuantLib-Python, как я предложил в вашем другом вопросе, вместо компиляции? - person Luigi Ballabio; 21.11.2018
comment
Спасибо Луиджи за то, что был со мной все это время!!! Я пробовал pip install QuantLib-Python, и это не сработало. Если бы это работало, это облегчило бы жизнь :). Как только я вставил одну пустую строку между исходной первой строкой и второй строкой в ​​setup.py, проблема исчезла. Сборка прошла успешно и завершила генерацию кода!!! Не ожидал, что это будет так сложно, но повезло, что у вас есть руководство. - person MagicFatto; 21.11.2018