2

コード

    #include <ql/quantlib.hpp>
    #include <boost/timer.hpp>
    int main ()
    {
      return 0;
    }

ライブラリのインストール

sudo apt-get install libquantlib-1.1

QuantLib 構成

$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[QuantLib::SwaptionVolatilityCube の vtable]+0x100): 「QuantLib::SwaptionVolatilityDiscrete::update() への非仮想サンク」への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib22SwaptionVolatilityCubeE0_NS_26SwaptionVolatilityDiscreteE[QuantLib::SwaptionVolatilityCube の vtable]+0xa8): 「QuantLib::SwaptionVolatilityDiscrete::update() への非仮想サンク」への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib22CapFloorTermVolSurfaceE[QuantLib::CapFloorTermVolSurface の vtable]+0xc8): 「QuantLib::CapFloorTermVolSurface::update() への非仮想サンク」への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20CapFloorTermVolCurveE[QuantLib::CapFloorTermVolCurve の vtable]+0xc8): 「QuantLib::CapFloorTermVolCurve::update() への非仮想サンク」への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[QuantLib::SpreadedSmileSection の vtable]+0x50): `QuantLib::SmileSection::optionPrice(double, QuantLib::Option::Type, double) const'
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[QuantLib::SpreadedSmileSection の vtable]+0x58): `QuantLib::SmileSection::digitalOptionPrice(double, QuantLib::Option::Type, double, double) const'
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[QuantLib::SpreadedSmileSection の vtable]+0x60): `QuantLib::SmileSection::vega(double, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib20SpreadedSmileSectionE[QuantLib::SpreadedSmileSection の vtable]+0x68): `QuantLib::SmileSection::density(double, double, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[QuantLib::SpreadedSmileSection の vtable]+0x50): `QuantLib::SmileSection::optionPrice(double, QuantLib::Option::Type, double) const'
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[QuantLib::SpreadedSmileSection の vtable]+0x58): `QuantLib::SmileSection::digitalOptionPrice(double, QuantLib::Option::Type, double, double) const'
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[QuantLib::SpreadedSmileSection の vtable]+0x60): `QuantLib::SmileSection::vega(double, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib20SpreadedSmileSectionE0_NS_12SmileSectionE[QuantLib::SpreadedSmileSection の vtable]+0x68): `QuantLib::SmileSection::density(double, double, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib10FdmBatesOpE[QuantLib::FdmBatesOp の vtable]+0x60): `QuantLib::FdmBatesOp::toMatrixDecomp() const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[QuantLib::FlatSmileSection の vtable]+0x50): `QuantLib::SmileSection::optionPrice(double, QuantLib::Option::Type, double) const'
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[QuantLib::FlatSmileSection の vtable]+0x58): `QuantLib::SmileSection::digitalOptionPrice(double, QuantLib::Option::Type, double, double) const'
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[QuantLib::FlatSmileSection の vtable]+0x60): `QuantLib::SmileSection::vega(double, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib16FlatSmileSectionE[QuantLib::FlatSmileSection の vtable]+0x68): `QuantLib::SmileSection::density(double, double, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[QuantLib::FlatSmileSection の vtable]+0x50): `QuantLib::SmileSection::optionPrice(double, QuantLib::Option::Type, double) const'
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[QuantLib::FlatSmileSection の vtable]+0x58): `QuantLib::SmileSection::digitalOptionPrice(double, QuantLib::Option::Type, double, double) const'
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[QuantLib::FlatSmileSection の vtable]+0x60): `QuantLib::SmileSection::vega(double, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTCN8QuantLib16FlatSmileSectionE0_NS_12SmileSectionE[QuantLib::FlatSmileSection の vtable]+0x68): `QuantLib::SmileSection::density(double, double, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[QuantLib::CPICapFloorTermPriceSurface の vtable]+0xb0): `QuantLib::CPICapFloorTermPriceSurface::price(QuantLib::Period const&, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[QuantLib::CPICapFloorTermPriceSurface の vtable]+0xb8): `QuantLib::CPICapFloorTermPriceSurface::capPrice(QuantLib::Period const&, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[QuantLib::CPICapFloorTermPriceSurface の vtable]+0xc0): `QuantLib::CPICapFloorTermPriceSurface::floorPrice(QuantLib::Period const&, double) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib27CPICapFloorTermPriceSurfaceE[QuantLib::CPICapFloorTermPriceSurface の vtable]+0x128): `QuantLib::CPICapFloorTermPriceSurface::cpiOptionDateFromTenor(QuantLib::Period const&) const' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib9CPICouponE[QuantLib::CPICoupon の vtable]+0x30): `QuantLib::CPICoupon::accept(QuantLib::AcyclicVisitor&)' への未定義の参照
/tmp/cc0GDoC4.o:(.data.rel.ro._ZTVN8QuantLib9CPICouponE[QuantLib::CPICoupon の vtable]+0x78): `QuantLib::CPICoupon::checkPricerImpl(boost::shared_ptr const&) const' への未定義の参照
collect2: ld が 1 つの終了ステータスを返しました

手伝っていただけませんか ?

4

1 に答える 1

1

を介して QuantLib 1.1 バイナリをインストールしましたapt-getが、新しいバージョン (ダウンロードした可能性がありますか?) のヘッダーを含めています。新しいヘッダーは、1.1 バイナリにない関数をさらに定義し、リンカ エラーを引き起こします。

エラーを回避するには、同じバージョンのヘッダーとバイナリを使用する必要があります。新しいものを使用するには、QuantLib バイナリを自分でコンパイルしてインストールします。実行するのと同じくらい簡単です:

./configure
make
sudo make install

dev代わりに 1.1 バージョンを使用するには、ヘッダーを含むパッケージをインストールする必要があります。私のシステムでは、実行することで行われます

sudo apt-get install libquantlib0-dev

しかし、あなたが言ったようlibquantlib0に代わりに持っているので、実行して開発パッケージの名前を見つけてください。libquantlib-1.1apt-cache search quantlib

于 2014-05-21T10:41:32.267 に答える