0

我正在尝试学习 QuantLib,这是我的第一个程序,我打算用它检查我的环境是否正常,并且我能够链接到 quantlib:

#include <ql/time/all.hpp>

using namespace QuantLib;

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

我的 quantlib 库安装在 /usr/local/lib 下,头文件安装在 /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 回答