I am having a visual studio project which requires the Intel C++ compiler. I took a deeper look at the code and found out that the Intel C++ compiler is needed because of a numerical library. This numerical library includes the following files:
- Code: Select all
#include "mkl_types.h"
#include "mkl_cblas.h"
#include "mkl_lapack.h"
Now I tried to replace LAPACK / CBLAS from Intel with the MinGW based implementation as described in:
http://icl.cs.utk.edu/lapack-for-windows/lapack/index.html
For LAPACK, this works fine but for CBLAS not. I have compiled CBLAS from there:
http://www.netlib.org/blas/
I have included cblas.h and added the compiled library to the Additional Dependencies within the Visual Studio Project.
Anyway I get the following linking error:
1><replaced>.obj : error LNK2019: unresolved external symbol "double __cdecl cblas_ddot(int,double const *,int,double const *,int)" (?cblas_ddot@@YANHPBNH0H@Z) referenced in function "double __cdecl <replaced>(class Matrix<double> const &,class Matrix<double> const &)" (?<replaced>@@YANABV?$Matrix@N@@0@Z)
1><replaced>.obj : error LNK2019: unresolved external symbol "void __cdecl cblas_dgemv(enum CBLAS_ORDER,enum CBLAS_TRANSPOSE,int,int,double,double const *,int,double const *,int,double,double *,int)" (?cblas_dgemv@@YAXW4CBLAS_ORDER@@W4CBLAS_TRANSPOSE@@HHNPBNH2HNPANH@Z) referenced in function "void __cdecl <replaced>(double,class Matrix<double> const &,class Matrix<double> const &,double,class Matrix<double> &,enum CBLAS_TRANSPOSE,enum CBLAS_ORDER)" (?<replaced>@@YAXNABV?$Matrix@N@@0NAAV1@W4CBLAS_TRANSPOSE@@W4CBLAS_ORDER@@@Z)
1><replaced>.obj : error LNK2019: unresolved external symbol "void __cdecl cblas_dgemm(enum CBLAS_ORDER,enum CBLAS_TRANSPOSE,enum CBLAS_TRANSPOSE,int,int,int,double,double const *,int,double const *,int,double,double *,int)" (?cblas_dgemm@@YAXW4CBLAS_ORDER@@W4CBLAS_TRANSPOSE@@1HHHNPBNH2HNPANH@Z) referenced in function "void __cdecl <replaced>(double,class Matrix<double> const &,class Matrix<double> const &,double,class Matrix<double> &,enum CBLAS_TRANSPOSE,enum CBLAS_TRANSPOSE,enum CBLAS_ORDER)" (?<replaced>@@YAXNABV?$Matrix@N@@0NAAV1@W4CBLAS_TRANSPOSE@@2W4CBLAS_ORDER@@@Z)
1>
Does anybody know how to replace mkl_cblas? Or any hints what could be wrong here?
Thanks a lot!