如何使armadillo-5.200.1(+openblas或lapacke)与visualstudio2010合作
how to make armadillo-5.200.1 (+openblas or lapacke) work with visual studio 2010?
一周以来,我一直在尝试让armadillo-52.00.1和openblas(或lapacke)与visualstudio2010一起使用,但blas和lapack库中的函数仍然存在一些未解决的外部符号错误。首先,我尝试从预先构建的windows二进制文件中安装openblas,并建立了一个新项目,并用下面的示例代码进行测试:
#include <cblas.h>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
blasint n = 10;
blasint in_x =1;
blasint in_y =1;
std::vector<double> x(n);
std::vector<double> y(n);
double alpha = 10;
std::fill(x.begin(),x.end(),1.0);
std::fill(y.begin(),y.end(),2.0);
cblas_daxpy( n, alpha, &x[0], in_x, &y[0], in_y);
//Print y
for(int j=0;j<n;j++)
std::cout << y[j] << "t";
std::cout << std::endl;
}
我收到一个未解析的外部符号"cblas_dexpy"错误。我试图用代码::块构建同一个项目,但得到了相同的错误。
我下载并设置了msys,以便能够编译我在github上下载的源代码(https://github.com/xianyi/Openblas)并试图让它在code::blocks和visualstudio上都能工作,但我仍然遇到了同样的错误。
然后我在自己的笔记本电脑上试了一下,因为它有Linux ubuntu 14.04 LTS。因此,我克隆了github并编译了源代码,并试图在另一个代码中设置它::blocks项目,我使用相同的示例代码对其进行了测试,但在pthread_create和pthread_join等函数中出现了未定义的引用错误。
我还尝试使用cmake编译lapacke源代码,遵循下页的说明:https://icl.cs.utk.edu/lapack-for-windows/lapack/.我用这个例子来测试,项目构建正确,但当我执行程序时,我会看到一条弹出窗口消息,说找不到liblapacke.dll。
为了在visualstudio中使用openblas,我遵循了关于第三方库的说明:
add the location of the header files to "C/C++->Additional Include Directories"
add the .lib files to the "Linker->Input->Additional Dependencies"
add the location of the .lib files to "Linker->General->Additional Library Directories"
我需要至少在Windows7上做这项工作,在visualstudio2010上做得更好,因为我们在工作中使用它。
您应该将dll文件复制到system32方向或y 的Debug或Release文件夹