Update 23.11.2015: A modified version of the patch is now part of the official QuantLib Release 1.7.
Update 22.09.2015: Please find the latest and improved version of the patch for QuantLib 1.6.2 here.
The usage of QuantLib in JVM and .NET languages (e.g. Java/Scala and C#/F#) via the SWIG interface has a known shortcoming. The implementation of QuantLib’s observer pattern does not tolerate a parallel garbage collector running in a different thread. As a result programs are randomly crashing or producing “pure virtual function calls”. A detailed description of this problem can be found e.g. here and within the references.
Please find here a patch for QuantLib 1.5 to fix this issue.
I tried to compile QuantLib V1.6.1 with the patch (boost_1_57_0). Having hard time building it.
Do you plan to include this patch in the Github’s version any time soon?
Following steps,
– Copy Patch\QuantLib\ql\patterns files to QuantLibV1.6.1\ql\patterns
– Copy (other than Patterns file) Patch\QuantLib\ql files to QuantLibV1.6.1\ql
– Make following changes in boost_1_57_0/boost/smart_ptr/detail/sp_counted_impl.hpp
#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
into
#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS_2)
(Total 3 occurrences were changed)
– Open QuantLib_VC10 solution at QuantLib-1.6.1
– Include ql/patterns/observable.cpp to the solution
– Include boost *lib* path and the QuantLib lib path in all the projects Project properties > Configuration Properties > Linker > General > Additional Library Directories
it looks like ..\..\lib;C:\boost_1_57_0\libs;C:\QuantLib-1.6.1\lib;%(AdditionalLibraryDirectories)
– Build Fails
***********************************************************************************************************
Error 1 error C3861: ‘registerWithObservables’: identifier not found C:\QuantLib-1.6.1\ql\instruments\swaption.cpp 109 1 QuantLib
Error 3 error LNK1181: cannot open input file ‘C:\QuantLib-1.6.1\lib\QuantLib-vc100-mt.lib’ C:\QuantLib-1.6.1\Examples\MarketModels\LINK MarketModels
***********************************************************************************************************
Have not tried following (or I don’t need to build QuantLib 1.6 libary)?
4. Add the full boost *lib* path and the QuantLib lib path in:
Project properties > Configuration Properties > Linker
> General > Additional Library Directories
to your SWIG Visual Studio project, which compiles quantlib_wrap.cpp
(Similar to what is needed to build the test suite.)
5. build solution
F:\OTC Live\TeamShare\QuantLib\boost_1_57_0;$(IncludePath)
F:\OTC Live\TeamShare\QuantLib\boost_1_57_0\libs;$(LibraryPath)
F:\OTC Live\TeamShare\QuantLib\QuantLib-1.6.1\QuantLib-1.6.1\lib
Please ignore last 3 lines (those are the actual Paths instead of C:/ that I had simplified for the post).
please see my reply on github
https://github.com/lballabio/quantlib/issues/306
Still having problems, would you mind having a look at my latest post in Github please?
Still can’t compile, there is something more to it – Have posted compilation errors in the Github link.
Guess I need to make more changes?