3

我在我的项目中需要一些线性代数,并希望为此使用 OpenBLAS。我下载了预编译版本(64 位版本)并将其解压缩到我的项目文件夹中。在 Visual Studio 中,我将 include-、bin- 和 lib- 文件夹添加到我的项目中,并毫无问题地运行了这个示例。

接下来,我想看一下LAPACK,所以我在includes中添加了lapacke.h,它与cblas.h在同一目录中,并且包含在官方下载中。但是现在我得到了数百个错误,对于每个函数,就好像一个 lib 文件丢失了一样。例如对于这条线

85 lapack_complex_float lapack_make_complex_float( float re, float im );

我明白了

PATH\include\lapacke.h(85): error C2146: syntax error: missing ';' before identifier 'lapack_make_complex_float'

我找不到有关如何设置 OpenBLAS/LAPACK 的更多信息,他们通常只是说“包含文件”,我有。否则 cblas 示例也不会运行。而我能找到的(相关)示例仅使用 cblas.h,而不是 lapacke.h

有人可以告诉我我做错了什么吗?

4

1 回答 1

1

问题是 OpenBlas 默认使用 C99 _Complex。这不受 Visual C++ 支持。您可以在包含 lapacke.h 之前使用标准库定义来解决此问题:

#include <complex>
#define lapack_complex_float std::complex<float>
#define lapack_complex_double std::complex<double>
#include <lapacke.h>
于 2019-10-18T07:19:48.383 回答