OpenBLAS和#x2018;cblas#U zdotc’;没有申报? 我正在研究C++赋值的代码。我是OpenBlas库的新手,希望获得一些关于如何应用它的指导。我检查了相关文档(),有趣的是,如果我尝试下面的代码行,我会得到它 std::complex<double> res = cblas_zdotc(fpowa_d.size(), fpowa_d.data(), 1, fpowa_p.data(), 1); func.cc:42:93: error: ‘cblas_zdotc’ was not declared in this scope std::complex res=cblas_zdoct(fpowa_d.size(),fpowa_d.data(),1,fpowa_p.data(),1); func.cc:42:93:错误:“cblas_zdotc”未在此范围内声明

OpenBLAS和#x2018;cblas#U zdotc’;没有申报? 我正在研究C++赋值的代码。我是OpenBlas库的新手,希望获得一些关于如何应用它的指导。我检查了相关文档(),有趣的是,如果我尝试下面的代码行,我会得到它 std::complex<double> res = cblas_zdotc(fpowa_d.size(), fpowa_d.data(), 1, fpowa_p.data(), 1); func.cc:42:93: error: ‘cblas_zdotc’ was not declared in this scope std::complex res=cblas_zdoct(fpowa_d.size(),fpowa_d.data(),1,fpowa_p.data(),1); func.cc:42:93:错误:“cblas_zdotc”未在此范围内声明,c++,declaration,libraries,openblas,C++,Declaration,Libraries,Openblas,但是,如果我尝试ddot或文档中的其他函数,它们将被声明。见: func.cc:42:78: error: cannot convert ‘ra::rarray<std::complex<double>, 1>’ to ‘const double*’ for argument ‘2’ to ‘double cblas_ddot(int, const double*, int, const double*, int)’ func.cc:42:78:错误:无法将参数“2”的

但是,如果我尝试ddot或文档中的其他函数,它们将被声明。见:

func.cc:42:78: error: cannot convert ‘ra::rarray<std::complex<double>, 1>’ to ‘const double*’ for argument ‘2’ to ‘double cblas_ddot(int, const double*, int, const double*, int)’
func.cc:42:78:错误:无法将参数“2”的“ra::rarray”转换为“const double*”,将其转换为“double cblas_ddot(int,const double*,int,const double*,int)”
这是意料之中的。我所包括的图书馆包括:

#include <iostream>
#include <complex>
#include <fftw3.h>
#include <cmath>
#include <cblas.h>
#包括
#包括
#包括
#包括
#包括

我不确定为什么会宣布cblas_ddot,但cblas_zdotc不是。我还尝试了非共轭版本,但也失败了。您对如何解决此问题有何想法?

您使用的是哪个操作系统、发行版和编译器?你是怎么准备图书馆的?至少,OpenBLAS有cblas_zdotc的声明。我现在真的很累,但明天我会编辑我的帖子,包括更详细的信息。简而言之:LinuxMint在一个带有gcc的虚拟盒子中。我昨天做了系统更新/升级,所以gcc应该是最新的。对于库,我必须用make TARGET=NAHALEM编译它,因为我的特定cpu(i7-4700MQ)没有64位支持(显然“BINARY=32”也可以工作)。我用BINARY=32重新安装了OpenBLAS,它工作了。我不完全理解为什么只是用这个标志重新安装它就行了,但它确实行了。结案(?)。