Код
#include <ql/quantlib.hpp>
#include <boost/timer.hpp>
int main ()
{
return 0;
}
Установка библиотеки
sudo apt-get install libquantlib-1.1
QuantLib Config
$quantlib-config --libs
-L/usr/lib -lQuantLib
$ quantlib-config --cflags
-I/usr/include
$
Шаг компиляции и ссылки:
$ g ++ test1.cpp -L / usr / lib -lQuantLib -I / usr / include -fPIC -o test1 /tmp/cc0GDoC4.o: В функции `QuantLib :: CPICoupon :: indexFixing () const ': test1.cpp :(. text._ZNK8QuantLib9CPICoupon11indexFixingEv [QuantLib :: CPICoupon :: indexFixing () const] + 0x36): неопределенная ссылка на `QuantLib :: CPICoupon :: indexFixing (QuantLib :: Date const) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib22SwaptionVolatilityCubeE[vtable для QuantLib :: SwaptionVolatilityCube] + 0x100): неопределенная ссылка на `не виртуальный переходник для QuantLib :: SwaptionVolatilityDiscrete :: /tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib22SwaptionVolatilityCubeE0_NS_26SwaptionVolatilityDiscreteE[vtable для QuantLib :: SwaptionVolatilityCube] + 0xa8): неопределенная ссылка на виртуальный объект (не связан) /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib22CapFloorTermVolSurfaceE[vtable for QuantLib :: CapFloorTermVolSurface] + 0xc8): неопределенная ссылка на `не виртуальный переходник для обновления QuantLib :: CapFloolSerm :: QuantVib :: CapFloorSerm /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20CapFloorTermVolCurveE[vtable для QuantLib :: CapFloorTermVolCurve] + 0xc8): неопределенная ссылка на «не виртуальный переходник для обновления QuantLib :: CapFloolvem для QuantLib :: CapFloolve» /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x50): неопределенная ссылка на `QuantLib :: SmileSection :: optionPrice (double, QuantLib :: Option :: Type, двойной) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x58): неопределенная ссылка на «QuantLib :: SmileSection :: digitalOptionPrice (double, QuantLib :: Option» двойной, двойной) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x60): неопределенная ссылка на `QuantLib :: SmileSection :: vega (double, double) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x68): неопределенная ссылка на `QuantLib :: SmileSection :: density (double, double, double) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x50): неопределенная ссылка на `QuantLib :: SmileSection :: optionL: :: двойной) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x58): неопределенная ссылка на `QuantLib :: SmileSection :: doubleOn :: doubleOction :: digitalOn :: doubleOption двойной, двойной) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x60): неопределенная ссылка на `QuantLib :: SmileSection, double) () /tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: SpreadedSmileSection] + 0x68): неопределенная ссылка на `QuantLib :: SmileSection, двойная плотность, двойная плотность) (двойная плотность) (двойная плотность) /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib10FdmBatesOpE[vtable для QuantLib :: FdmBatesOp] + 0x60): неопределенная ссылка на `QuantLib :: FdmBatesOp :: toMatrixDecomp () const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x50): неопределенная ссылка на `QuantLib :: SmileSection :: optionPrice (double, QuantLib :: Option :: Type, двойной) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x58): неопределенная ссылка на `QuantLib :: SmileSection :: digitalOptionPrice (double, QuantLib :: Option :: Type, двойной, двойной) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x60): неопределенная ссылка на `QuantLib :: SmileSection :: vega (double, double) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x68): неопределенная ссылка на `QuantLib :: SmileSection :: density (double, double, double) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x50): неопределенная ссылка на `QuantLib :: SmileSection :: OptionLibbice (optionPrice) двойной) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x58): неопределенная ссылка на `QuantLib :: SmileSection :: option TypeLice (digitalOptionP) двойной, двойной) const ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x60): неопределенная ссылка на `QuantLib :: SmileSection :: vega) двойной (двойной, двойной) /tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[vtable для QuantLib :: FlatSmileSection] + 0x68): неопределенная ссылка на `QuantLib :: SmileSection :: density) (double), double, double, double, double /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[vtable для QuantLib :: CPICapFloorTermPriceSurface] + 0xb0): неопределенная ссылка на объект QuantLib :: CPICapFliceLice :: Quantcast (CPICapFriceLice) /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[vtable для QuantLib :: CPICapFloorTermPriceSurface] + 0xb8): неопределенная ссылка на интерфейсную копию QuantLib :: CPICapFLicePrice_ClanP ::. /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[vtable для QuantLib :: CPICapFloorTermPriceSurface] + 0xc0): неопределенная ссылка на интерфейсную копию QuantLib :: CPICapFlicePervice :: QuanticeLb :: CPICapFlicePricePervice /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[vtable для QuantLib :: CPICapFloorTermPriceSurface] + 0x128): неопределенная ссылка на контекстную реплику QuantLib :: CPICapFromServer :: Quantcast /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib9CPICouponE[vtable для QuantLib :: CPICoupon] + 0x30): неопределенная ссылка на `QuantLib :: CPICoupon :: accept (QuantLib :: AcyclicVisitor) ' /tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib9CPICouponE[vtable для QuantLib :: CPICoupon] + 0x78): неопределенная ссылка на `QuantLib :: CPICoupon :: checkPricerImpl (boost :: shared_ptr const) const ' collect2: ld вернул 1 статус выхода
Не могли бы вы мне помочь ?
Вы установили бинарные файлы QuantLib 1.1 через apt-get
, но вы включаете заголовки из более новой версии (возможно, той, что вы скачали?)
Более новые заголовки определяют больше функций, которые отсутствуют в бинарном файле 1.1 и вызывают ошибки компоновщика.
Чтобы избежать ошибок, вам нужно использовать заголовки и двоичные файлы одной и той же версии.
Чтобы использовать более новый, соберите и установите двоичные файлы QuantLib самостоятельно; это должно быть так же просто, как выполнить:
./configure
make
sudo make install
Чтобы использовать версию 1.1 вместо этого, вам нужно установить dev
пакет, который содержит заголовки. В моей системе это можно сделать, выполнив
sudo apt-get install libquantlib0-dev
но опять же у меня есть libquantlib0
вместо libquantlib-1.1
как ты уже говорил, так что лучше беги apt-cache search quantlib
и узнайте, как называется пакет dev.