我正在开发一个使用Accelerate框架(用于LAPACK)的程序,但有几个问题。该代码用C编写,但需要包含C ++头。我将文件重命名为.cpp,但它导致了两个错误,如下所示。
因此,我然后意识到尝试#include <Accelerate/Accelerate.h>
包含标头,因为我们的LAPACK编码器所做的是在文件开头重新键入定义(dgemm_(), dposv_(), etc.
),并依靠编译器/链接器进行处理。所以我注释掉了这些,然后执行#include。结果是:
那么,如何在C ++文件中使用Accelerate使用LAPACK函数?我对LAPACK不太熟悉,所以我不确定该框架通常如何工作。
最佳答案
您应该使用类型dgemm_
或dposv_
而不是__CLPK_integer
的呼叫long
和int
。该错误是因为在C ++中不能将long*
隐式转换为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;
关于c++ - Accelerate.framework中的数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3742122/