我已经为Windows盒成功安装了QuabtLib,并希望将其移植到Linux Ubuntu。 Boost安装成功,并且我能够从swig目录运行./configure。但是,当我运行make文件时,系统在以下几点冻结:

QuantLib/quantlib_wrap.cpp: In function ‘void* _p_TestSurfacePtrTo_p_boost__shared_ptrT_Surface_t(void*, int*)’:
QuantLib/quantlib_wrap.cpp:253496:41: warning: ‘Surface’ is deprecated (declared at /usr/include/ql/math/surface.hpp:47) [-Wdeprecated-declarations]
     return (void *)((boost::shared_ptr< Surface > *)  ((TestSurfacePtr *) x));


如果有人知道解决办法,那就太好了。
环境信息:Boost 1.56
                  QuantLib 1.4
                  QuantLibSwig 1.4
                  Python2.7.6
                  Ubuntu的14
谢谢,

最佳答案

这是我上面的评论,发布为答案供将来参考。

该警告是预期的。 Surface类在QuantLib 1.4中被标记为已弃用,无论如何我们都要对其进行包装,并且编译器会警告我们。

冻结可能是由可用内存用尽引起的(对于原始海报,这肯定是造成的)。包装器很大,重约10 MB,要编译它们需要大量资源。如果您使用的是虚拟机,请尝试添加更多内存。如果您使用的是物理机而不能使用物理机,请尝试禁用优化以降低编译过程的要求。您可以通过将CXXFLAGS=-O0传递给./configuremake来实现。

关于c++ - 无法为Swig Python设置QuantLib,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25959211/

10-13 08:05