Кампіляцыя прыклад QuantLib

Я ішоў Guidlines для ўстаноўкі QuantLib для Макінтош тут http://quantlib.org/install/macosx.shtml , а таксама ўсталяваў сцягі з дапамогай каманд:

экспарт CXXFLAGS = -stdlib = libstdc ++

экспарт LDFLAGS = -mmacosx-версія-мін = 10,6

Аднак, калі я спрабую сабраць прыклады, як сказаў у дабрацца да нас, я атрымліваю наступнае паведамленне пра памылку:

In file included from BermudanSwaption.cpp:22:
In file included from /opt/local/include/ql/quantlib.hpp:43:
In file included from /opt/local/include/ql/experimental/all.hpp:25:
In file included from /opt/local/include/ql/experimental/volatility/all.hpp:21:
In file included from /opt/local/include/ql/experimental/volatility/zabr.hpp:31:
In file included from /opt/local/include/ql/math/statistics/incrementalstatistics.hpp:35:
In file included from /opt/local/include/boost/accumulators/statistics/stats.hpp:14:
In file included from /opt/local/include/boost/accumulators/statistics_fwd.hpp:12:
/opt/local/include/boost/mpl/print.hpp:50:19: warning: in-class initialization of non-static data member is a
      C++11 extension [-Wc++11-extensions]
    const int m_x = 1/(sizeof(T) - sizeof(T));
                  ^
1 warning generated.
Undefined symbols for architecture x86_64:
  "QuantLib::MultiStepSwap::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepSwap in BermudanSwaption-a6bf28.o
  "QuantLib::ExerciseAdapter::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::ExerciseAdapter in BermudanSwaption-a6bf28.o
  "QuantLib::OneStepForwards::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::OneStepForwards in BermudanSwaption-a6bf28.o
  "QuantLib::BermudanExercise::BermudanExercise(std::__1::vector > const&, bool)", referenced from:
      _main in BermudanSwaption-a6bf28.o
  "QuantLib::MultiStepNothing::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepNothing in BermudanSwaption-a6bf28.o
  "QuantLib::MultiStepRatchet::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepRatchet in BermudanSwaption-a6bf28.o
  "QuantLib::MultiStepForwards::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepForwards in BermudanSwaption-a6bf28.o
  "QuantLib::MultiStepSwaption::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepSwaption in BermudanSwaption-a6bf28.o
  "QuantLib::OneStepOptionlets::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::OneStepOptionlets in BermudanSwaption-a6bf28.o
  "QuantLib::MultiStepOptionlets::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepOptionlets in BermudanSwaption-a6bf28.o
  "QuantLib::OneStepCoinitialSwaps::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::OneStepCoinitialSwaps in BermudanSwaption-a6bf28.o
  "QuantLib::OneStepCoterminalSwaps::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::OneStepCoterminalSwaps in BermudanSwaption-a6bf28.o
  "QuantLib::MultiStepCoinitialSwaps::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepCoinitialSwaps in BermudanSwaption-a6bf28.o
  "QuantLib::MultiStepInverseFloater::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepInverseFloater in BermudanSwaption-a6bf28.o
  "QuantLib::MultiStepCoterminalSwaps::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepCoterminalSwaps in BermudanSwaption-a6bf28.o
  "QuantLib::MultiStepCoterminalSwaptions::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepCoterminalSwaptions in BermudanSwaption-a6bf28.o
  "QuantLib::MultiStepPeriodCapletSwaptions::nextTimeStep(QuantLib::CurveState const&, std::__1::vector >&, std::__1::vector >, std::__1::allocator > > >&)", referenced from:
      vtable for QuantLib::MultiStepPeriodCapletSwaptions in BermudanSwaption-a6bf28.o
  "QuantLib::Error::Error(std::__1::basic_string, std::__1::allocator > const&, long, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&)", referenced from:
      QuantLib::DiscretizedOption::reset(unsigned long) in BermudanSwaption-a6bf28.o
      QuantLib::Instrument::setupArguments(QuantLib::PricingEngine::arguments*) const in BermudanSwaption-a6bf28.o
      QuantLib::Option::setupArguments(QuantLib::PricingEngine::arguments*) const in BermudanSwaption-a6bf28.o
      QuantLib::Payoff::accept(QuantLib::AcyclicVisitor&) in BermudanSwaption-a6bf28.o
      QuantLib::BlackVolTermStructure::accept(QuantLib::AcyclicVisitor&) in BermudanSwaption-a6bf28.o
      QuantLib::SimpleQuote::value() const in BermudanSwaption-a6bf28.o
      QuantLib::Handle::operator->() const in BermudanSwaption-a6bf28.o
      ...
  "QuantLib::detail::operator<<(std::__1::basic_ostream >&, QuantLib::detail::percent_holder const&)", referenced from:
      calibrateModel(boost::shared_ptr const&, std::__1::vector, std::__1::allocator > > const&) in BermudanSwaption-a6bf28.o
      _main in BermudanSwaption-a6bf28.o
  "QuantLib::operator<<(std::__1::basic_ostream >&, QuantLib::Date const&)", referenced from:
      QuantLib::InterestRateIndex::valueDate(QuantLib::Date const&) const in BermudanSwaption-a6bf28.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Ці ёсць што-то не так я зрабіў? У чым праблема з «линкера» тут? Я быў бы вельмі ўдзячны за дапамогу, так як я спрабаваў атрымаць гэтую працу на працягу вельмі доўгага часу.

2

2 адказы

Я таксама сустракаў такое пытанне некалькі хвілін, перш чым я зразумеў, што гэтая прычына памылкі з стандартнай бібліятэкі, усталяванай Mac. Трэба ўсталяваць -stdlib = libstdc ++ пры будаўніцтве, у параўнанні з Libc ++ па змаўчанні ў некалькіх апошніх версіях MAC.

1
дададзена
Чаму гэта так - мае ўстаноўкі памылкі кажуць, каб выкарыстоўваць Libc ++ (які з'яўляецца больш новым, на MAC OS X 10.12)
дададзена аўтар rrg, крыніца

Вы не можаце проста скампіляваць BermudanSwaption.cpp і спадзяюся, што ўсё будзе ў парадку. Вы павінны сабраць усю бібліятэку QuantLib і сувязь з згенераванымі файламі бібліятэкі. Калі ласка Google «кампіляцыі і кампаноўкі C ++» для атрымання дадатковай інфармацыі.

Безумоўна, самы просты спосаб, каб гэта адбылося на Mac, каб зрабіць гэта з Xcode. Вам трэба будзе стварыць новы праект Xcode, і імпартаваць ўсе файлы праекта Quantlib ў яго. Далей, вам трэба будзе стварыць асноўную функцыю (). Xcode робіць кампіляцыі і кампаноўкі для вашага аўтаматычна.

У маім скрыншоце, я QuantLib працуе ў Xcode і спрабуе працэс OU.

enter image description here

1
дададзена
@Elekko Вам трэба дадаць уключаны шлях да Xcode для таго, дзе вы ўстанавілі файлы.
дададзена аўтар John, крыніца
Няўжо менавіта так, як вы рабілі, аднак #include не знойдзены ў адпаведнасці з XCode, нават калі я магу ўбачыць яго там
дададзена аўтар aLu, крыніца