如何使armadillo-5.200.1(+openblas或lapacke)与visualstudio2010合作

how to make armadillo-5.200.1 (+openblas or lapacke) work with visual studio 2010?

本文关键字:lapacke visualstudio2010 合作 +openblas armadillo-5 何使      更新时间:2023-10-16

一周以来,我一直在尝试让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文件夹