Hello,

I have two libraries that uses LAPACK subroutines, but one of them

uses Boost.NumericBindings and the other one uses LAPACKE (the

official LAPACK C interface).

I have troubles to make them work together since I got many conflict

errors at compilation time.

Here below is a stupid (but effective) example:

--- [boost_lapacke.cpp] ---

#include <boost/numeric/bindings/lapack/computational/getrf.hpp>

#include <lapacke.h>

int main()

{

}

--- [/boost_lapacke.cpp] ---

Now, try to compile it. For instance, in my case:

$ g++ -Wall -Wextra -ansi -pedantic -I/usr/include/lapacke

-I$HOME/sys/src/git/boost -I$HOME/sys/src/svn/boost-numeric_bindings

-o boost_lapacke boost_lapacke.cpp -llapack -lblas -llapacke -lm

The errors I get are like the one below:

--- [error] ---

In file included from boost_lapacke.cpp:2:0:

/usr/include/lapacke/lapacke.h:11760:56: error: conflicting

declaration of C function ‘void sgetrf_(int*, int*, float*, int*,

int*, int*)’

lapack_int* ipiv, lapack_int *info );

^

In file included from

/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h:17:0,

from

/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h:17,

from

/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/lapack/computational/getrf.hpp:39,

from boost_lapacke.cpp:1:

/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h:326:36:

note: previous declaration ‘void sgetrf_(const fortran_int_t*, const

fortran_int_t*, float*, const fortran_int_t*, fortran_int_t*,

fortran_int_t*)’

#define LAPACK_SGETRF FORTRAN_ID2( sgetrf, SGETRF )

^

/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/detail/config/fortran.hpp:33:32:

note: in definition of macro ‘FORTRAN_ID2’

#define FORTRAN_ID2( id, ID2 ) id##_

^

/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h:940:6:

note: in expansion of macro ‘LAPACK_SGETRF’

void LAPACK_SGETRF( const fortran_int_t* m, const fortran_int_t* n, float* a,

^

--- [/error] ---

Any idea on how to solve these conflicts?

My system is:

- Linux Fedora 22 x86_64

- LAPACK 3.5.0

- Boost git version

- Boost.NumericBindings svn version

- GCC 5.1.1

Thank you very much.

Best,

Marco

_______________________________________________

ublas mailing list

[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublasSent to:

[hidden email]