对于初学者,我经历了几个类似的问题和主题,但没有找到答案(或者不知道如何应用它)。我正在使用 VS 2019 和最新的 LAPACK。首先,这是我到目前为止所做的:
- 下载的 LAPACK 仓库
- 将 cmake 文件更改为也构建 cblas
- 使用 CMake 生成项目
- 建立所说的项目(不会让我启动它,所以我猜这就是它应该做的)
- 将带有头文件的文件夹传递给包含目录 (LIBPATH),将带有 .lib 文件的文件夹传递给库目录 (LIB) 以及 .lib 文件本身(lapack.lib、lapacke.lib、blas.lib、cblas.lib)作为附加依赖项链接器
然后尝试启动以下代码,只是为了得到“函数_main中引用的未解析的外部符号_cblas_dgemv”:
#include<stdio.h>
#include<math.h>
#include<time.h>
#include <stdlib.h>
#include "cblas.h"
#include <complex>
#define lapack_complex_float std::complex<float>
#define lapack_complex_double std::complex<double>
#include "lapacke.h"
#define n 2000
#define n2 n*n
int main()
{
double* Af = (double*)calloc(n2, sizeof(double));
double* x = (double*)calloc(n, sizeof(double));
for (int i = 0; i < n; i++)
{
x[i] = i + 1;
}
double* b = (double*)calloc(n, sizeof(double));
cblas_dgemv(CblasRowMajor, CblasTrans, n, n, 1, Af, n, x, 1, 0, b, 1);
for (int i = 0; i < 20; i++)
printf(" b%d = %f\n", i, b[i]);
}
根据在网上找到的一些随机建议,我还尝试将编译类型从默认更改为 C,但结果是其他依赖项产生了数千个错误(诸如“原子”之类的文件,不太确定,但我怀疑它们来自基础库) .