我正在开发一个使用Accelerate框架(用于LAPACK)的程序,我有几个问题。代码是用C编写的,但需要包含C ++头文件。我将文件重命名为.cpp,但它导致了两个错误,如下所示。
所以我后来意识到尝试#include <Accelerate/Accelerate.h>
包含头文件,因为我们的LAPACK编码器所做的是在文件开头重新键入定义(dgemm_(), dposv_(), etc.
)并依赖于编译器/链接器解决问题。所以我评论了那些,只是#include。结果是:
那么,如何在C ++文件中使用Accelerate来使用LAPACK函数?我对LAPACK并不熟悉,所以我不确定该框架通常如何工作。
答案 0 :(得分:2)
您应该使用dgemm_
或dposv_
类型而不是__CLPK_integer
来使用来电long
和int
。该错误是因为long*
无法在C ++中隐式转换为int*
。
typedef long int __CLPK_integer;
typedef long int __CLPK_logical;
typedef float __CLPK_real;
typedef double __CLPK_doublereal;
typedef __CLPK_logical (*__CLPK_L_fp)();
typedef long int __CLPK_ftnlen;