forum.alglib.net

ALGLIB forum
It is currently Sun Dec 22, 2024 8:24 am

All times are UTC


Forum rules


1. This forum can be used for discussion of both ALGLIB-related and general numerical analysis questions
2. This forum is English-only - postings in other languages will be removed.



Post new topic Reply to topic  [ 1 post ] 
Author Message
 Post subject: Compile and link alglib library with new code
PostPosted: Sat Jul 16, 2016 4:18 am 
Offline

Joined: Sat Jul 16, 2016 3:59 am
Posts: 1
Hi,

I just found out about alglib and wanted it give it a shot to a problem of spline fitting using constrained least squares optimization that I'm working on. I downloaded all the source code and took the example of lsfit_d_lin to get an introduction to the compilation and linking process. Here is the code:

Code:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#include "ap.h"
#include "alglibinternal.h"
#include "alglibmisc.h"
#include "diffequations.h"
#include "dataanalysis.h"
#include "fasttransforms.h"
#include "integration.h"
#include "interpolation.h"
#include "linalg.h"
#include "optimization.h"
#include "solvers.h"
#include "specialfunctions.h"
#include "statistics.h"
#include "stdafx.h"

using namespace alglib;


int main(int argc, char **argv)
{
    //
    // In this example we demonstrate linear fitting by f(x|a) = a*exp(0.5*x).
    //
    // We have:
    // * y - vector of experimental data
    // * fmatrix -  matrix of basis functions calculated at sample points
    //              Actually, we have only one basis function F0 = exp(0.5*x).
    //
    real_2d_array fmatrix = "[[0.606531],[0.670320],[0.740818],[0.818731],[0.904837],[1.000000],[1.105171],[1.221403],[1.349859],[1.491825],[1.648721]]";
    real_1d_array y = "[1.133719, 1.306522, 1.504604, 1.554663, 1.884638, 2.072436, 2.257285, 2.534068, 2.622017, 2.897713, 3.219371]";
    ae_int_t info;
    real_1d_array c;
    lsfitreport rep;

    //
    // Linear fitting without weights
    //
    lsfitlinear(y, fmatrix, info, c, rep);
    printf("%d\n", int(info)); // EXPECTED: 1
    printf("%s\n", c.tostring(4).c_str()); // EXPECTED: [1.98650]

    //
    // Linear fitting with individual weights.
    // Slightly different result is returned.
    //
    real_1d_array w = "[1.414213, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]";
    lsfitlinearw(y, w, fmatrix, info, c, rep);
    printf("%d\n", int(info)); // EXPECTED: 1
    printf("%s\n", c.tostring(4).c_str()); // EXPECTED: [1.983354]
    return 0;
}


I am using 64-bit Ubuntu 14.04 and also installed libalglib-dev and libalglib3.8 that was available from the repositories.

I used the following command to compile:
Quote:
g++ -g -Wall -I../src/ -L/usr/lib/x86_64-linux-gnu/ -lalglib linear.cpp


But I end up with a bunch of linker errors:
Quote:
/tmp/ccrVBuSp.o: In function `main':
/home/user/source/alglib/tests/linear.cpp:33: undefined reference to `alglib::real_2d_array::real_2d_array(char const*)'
/home/user/source/alglib/tests/linear.cpp:34: undefined reference to `alglib::real_1d_array::real_1d_array(char const*)'
/home/user/source/alglib/tests/linear.cpp:36: undefined reference to `alglib::real_1d_array::real_1d_array()'
/home/user/source/alglib/tests/linear.cpp:37: undefined reference to `alglib::lsfitreport::lsfitreport()'
/home/user/source/alglib/tests/linear.cpp:42: undefined reference to `alglib::lsfitlinear(alglib::real_1d_array const&, alglib::real_2d_array const&, long&, alglib::real_1d_array&, alglib::lsfitreport&)'
/home/user/source/alglib/tests/linear.cpp:44: undefined reference to `alglib::real_1d_array::tostring(int) const'
/home/user/source/alglib/tests/linear.cpp:50: undefined reference to `alglib::real_1d_array::real_1d_array(char const*)'
/home/user/source/alglib/tests/linear.cpp:51: undefined reference to `alglib::lsfitlinearw(alglib::real_1d_array const&, alglib::real_1d_array const&, alglib::real_2d_array const&, long&, alglib::real_1d_array&, alglib::lsfitreport&)'
/home/user/source/alglib/tests/linear.cpp:53: undefined reference to `alglib::real_1d_array::tostring(int) const'
/home/user/source/alglib/tests/linear.cpp:50: undefined reference to `alglib::real_1d_array::~real_1d_array()'
/home/user/source/alglib/tests/linear.cpp:37: undefined reference to `alglib::lsfitreport::~lsfitreport()'
/home/user/source/alglib/tests/linear.cpp:36: undefined reference to `alglib::real_1d_array::~real_1d_array()'
/home/user/source/alglib/tests/linear.cpp:34: undefined reference to `alglib::real_1d_array::~real_1d_array()'
/home/user/source/alglib/tests/linear.cpp:54: undefined reference to `alglib::real_2d_array::~real_2d_array()'
/home/user/source/alglib/tests/linear.cpp:50: undefined reference to `alglib::real_1d_array::~real_1d_array()'
/home/user/source/alglib/tests/linear.cpp:37: undefined reference to `alglib::lsfitreport::~lsfitreport()'
/home/user/source/alglib/tests/linear.cpp:36: undefined reference to `alglib::real_1d_array::~real_1d_array()'
/home/user/source/alglib/tests/linear.cpp:34: undefined reference to `alglib::real_1d_array::~real_1d_array()'
/home/user/source/alglib/tests/linear.cpp:54: undefined reference to `alglib::real_2d_array::~real_2d_array()'
collect2: error: ld returned 1 exit status


Could someone help me with this? Also, if anyone has an example of using CMake to use with linking the alglib library and wouldn't mind sharing it, I'd appreciate it.

Thanks,
Shaun.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 31 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group