Не собирается alglib в проекте

300
15 декабря 2017, 03:30

Доброе всем время суток, скачал с оф сайта alglib для С++ В инструкции на ОФ сайте сказано что нужно просто подключить h файл и все будет прекрасно, но как всегда это не так.

Я беру из их документации пример следующего содержания:

#include <cstdio>
#include <cstdlib>
#include <vector>
#include "interpolation.h" // alglib
int main(int argc, char** argv) {
   if(argc<1) {
      printf("usage: %s <>\n", argv[0]);
      exit(EXIT_FAILURE);
   }
   std::vector<double> X(5), Y(5);
   X[0]=0.1;
   X[1]=0.4;
   X[2]=1.2;
   X[3]=1.8;
   X[4]=2.0;
   Y[0]=0.1;
   Y[1]=0.7;
   Y[2]=0.6;
   Y[3]=1.1;
   Y[4]=0.9;
   alglib::real_1d_array AX, AY;
   AX.setcontent(X.size(), &(X[0]));
   AY.setcontent(Y.size(), &(Y[0]));
   alglib::spline1dinterpolant spline;
   alglib::spline1dbuildcubic(AX, AY, X.size(), 2,0.0,2,0.0, spline);
   //alglib::spline1dbuildcubic(AX, AY, spline);

   for(size_t i=0; i<X.size(); i++){
      printf("%f %f\n", X[i], Y[i]);
   }
   printf("\n");
   for(int i=-50; i<250; i++){
      double x=0.01*i;
      printf("%f %f\n", x, alglib::spline1dcalc(spline,x));
   }
   printf("\n");
   return EXIT_SUCCESS;
}

Пытаюсь его откомпилировать выполнив:

g++ example_alglib.cpp

Получаю ошибки:

/tmp/ccAhAImI.o: In function `main':
example_alglib.cpp:(.text+0x1c8): undefined reference to `alglib::real_1d_array::real_1d_array()'
example_alglib.cpp:(.text+0x1d7): undefined reference to `alglib::real_1d_array::real_1d_array()'
example_alglib.cpp:(.text+0x20a): undefined reference to `alglib::real_1d_array::setcontent(int, double const*)'
example_alglib.cpp:(.text+0x23d): undefined reference to `alglib::real_1d_array::setcontent(int, double const*)'
example_alglib.cpp:(.text+0x24c): undefined reference to `alglib::spline1dinterpolant::spline1dinterpolant()'
example_alglib.cpp:(.text+0x28b): undefined reference to `alglib::spline1dbuildcubic(alglib::real_1d_array const&, alglib::real_1d_array const&, int, int, double, int, double, alglib::spline1dinterpolant&)'
example_alglib.cpp:(.text+0x35a): undefined reference to `alglib::spline1dcalc(alglib::spline1dinterpolant const&, double)'
example_alglib.cpp:(.text+0x3a1): undefined reference to `alglib::spline1dinterpolant::~spline1dinterpolant()'
example_alglib.cpp:(.text+0x3b0): undefined reference to `alglib::real_1d_array::~real_1d_array()'
example_alglib.cpp:(.text+0x3bf): undefined reference to `alglib::real_1d_array::~real_1d_array()'
example_alglib.cpp:(.text+0x434): undefined reference to `alglib::spline1dinterpolant::~spline1dinterpolant()'
example_alglib.cpp:(.text+0x447): undefined reference to `alglib::real_1d_array::~real_1d_array()'
example_alglib.cpp:(.text+0x45a): undefined reference to `alglib::real_1d_array::~real_1d_array()'
collect2: error: ld returned 1 exit status

Подскажите как победить эти ошибки? не чего толкового нагуглить не могу.

Собираю:

g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Answer 1

Блин вот магия, разобрался, кароче распаковываем скаченную библиотеку, в папку src кладем свой файл с main функцией, и просто пишем g++ *.cpp -o main и все на выходе бинарник main который работает...

READ ALSO
Компилятор не может найти omp.h

Компилятор не может найти omp.h

Не получается подключить поддержку OpenMP в XcodeПри попытке компиляции любого кода появляется ошибка:

246
.lib не является приложением win32

.lib не является приложением win32

В одном решении у меня находятся два приложения: Статическая библиотека и Консольное приложениеСобрал библиотеку, добавил в консольное...

330
Предупреждение C4239: nonstandard extension used

Предупреждение C4239: nonstandard extension used

Почему возникает предупреждение

190