从一个星期开始,我一直在尝试使armadillo-5.200.1和openblas(或lapacke)与Visual Studio 2010一起使用,但是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_daxpy»错误。我尝试使用code :: blocks构建相同的项目,并得到相同的错误。

我下载并设置了msys以便能够编译我在github(https://github.com/xianyi/Openblas)上下载的源代码,并试图使其在code :: blocks和visual studio上都可以使用,但是我仍然遇到相同的错误。

然后,我尝试使用自己的笔记本电脑,因为它具有Linux ubuntu 14.04 LTS。因此,我克隆了github并编译了源代码,并尝试在另一个code :: blocks项目中进行设置,并使用相同的示例代码对其进行了测试,并获得了有关诸如pthread_create和pthread_join之类的函数的未定义参考错误。

我还尝试按照以下页面的说明使用cmake编译lapacke源:https://icl.cs.utk.edu/lapack-for-windows/lapack/。我使用示例测试了正确构建的项目,但是当我执行程序时,我弹出一个窗口消息,提示找不到liblapacke.dll。

要将Openblas与Visual Studio一起使用,我遵循了有关第三方库的说明:

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"


我需要至少在Windows 7上使此工作更好,而在Visual Studio 2010中使它更好,因为我们在工作中使用它。

最佳答案

您应该将dll文件复制到system32方向或y的Debug或Release文件夹

关于c++ - 如何使armadillo-5.200.1(+ openblas或lapacke)在Visual Studio 2010中工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30977230/

10-15 06:19