0

QuantLib を学習しようとしています。これは、自分の環境が問題なく、quantlib にリンクできることを確認する最初のプログラムです。

#include <ql/time/all.hpp>

using namespace QuantLib;

int main ()
{
  Date d1(14, February, 2014);
  return 0;
}

/usr/local/lib の下に quantlib ライブラリをインストールし、/usr/local/include/ql の下にヘッダーをインストールしました。この小さなプログラムを次のようにコンパイルしようとします。

$ LC_ALL=C g++ -Wall -lQuantLib -o sample1 quantlib-sample-1.cpp
/tmp/cc4Z2xsf.o: In function `main':
quantlib-sample-1.cpp:(.text+0x1f): undefined reference to `QuantLib::Date::Date(int, QuantLib::Month, int)'
collect2: error: ld returned 1 exit status

「ql/quantlib.hpp」を含めると、事態はさらに悪化します(上記のようなエラーがはるかに多くなります)。私のldconfigがうまくいかない場合は、「-L/usr/local/lib」を渡してみました。

私はここで少し迷っています...手がかりはありますか?

4

2 に答える 2

1

コンパイルに使用されたコマンドの形式が正しくありません。ライブラリ リンク オプションは、出力と入力の後に配置する必要があります。これは機能します:

$ LC_ALL=C g++ -Wall -o sample1 quantlib-sample-1.cpp -lQuantLib

コマンドの最後に「-lQuantLib」を付けます。

「ql/quantlib.hpp」または「ql/time/all.hpp」を含む両方で機能します。

于 2014-02-14T20:07:02.407 に答える
0

最初の行をより一般的な (そして推奨される) キャッチオール インクルードに変更すると、うまくいきます。

edd@max:/tmp$ g++ -o qldate qldate.cpp -lQuantLib    ## no errors or warnings
edd@max:/tmp$ cat qldate.cpp 
#include <ql/quantlib.hpp>

using namespace QuantLib;

int main ()
{
  Date d1(14, February, 2014);
  return 0;
}
edd@max:/tmp$ 
于 2014-02-14T19:39:32.463 に答える