Я пытаюсь выучить 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» (гораздо больше ошибок, как показано выше). Я попытался передать «-L / usr / local / lib», если мой ldconfig не в порядке.
Я немного потерян здесь … Есть подсказка?
Команда, используемая для компиляции, искажена. Опции связывания библиотеки должны идти после результатов и входов. Это работает:
$ LC_ALL=C g++ -Wall -o sample1 quantlib-sample-1.cpp -lQuantLib
С ‘-lQuantLib’ в конце команды.
Он работает как в том числе «ql / quantlib.hpp» или «ql / time / all.hpp».
Это работает для меня, если я изменю первую строку на более общую (и рекомендуемую):
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$