我正在开发一个使用Accelerate框架(用于LAPACK)的程序,但有几个问题。该代码用C编写,但需要包含C ++头。我将文件重命名为.cpp,但它导致了两个错误,如下所示。



因此,我然后意识到尝试#include <Accelerate/Accelerate.h>包含标头,因为我们的LAPACK编码器所做的是在文件开头重新键入定义(dgemm_(), dposv_(), etc.),并依靠编译器/链接器进行处理。所以我注释掉了这些,然后执行#include。结果是:



那么,如何在C ++文件中使用Accelerate使用LAPACK函数?我对LAPACK不太熟悉,所以我不确定该框架通常如何工作。

最佳答案

您应该使用类型dgemm_dposv_而不是__CLPK_integer的呼叫longint。该错误是因为在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/

10-11 00:22