0
我想用Cython打包一些C代碼,但我遇到了一個我不明白的錯誤,儘管有很多搜索,但我似乎無法找到任何東西。這裏是我的C代碼Cython int **和int *類型
void cssor(double *U, int m, int n, double omega, double tol, int maxiters, int *info){
double maxerr, temp, lcf, rcf;
int i, j, k;
lcf = 1.0 - omega;
rcf = 0.25 * omega;
for (k =0; k < maxiters ; k ++){
maxerr = 0.0;
for (j =1; j < n-1; j++) {
for (i =1; i < m-1; i++) {
temp = U[i*n+ j];
U[i*n+j] = lcf * U[i*n+j] + rcf * (U[i*n+j-1] + U [i*n+j+1] + U [(i-1)*n + j] + U [(i+1)*n+j]);
maxerr = fmax(fabs(U[i*n+j] - temp), maxerr);
}
}
if(maxerr < tol){break;}
}
if (maxerr < tol) {*info =0;}
else{*info =1;}
}
我.pyx文件
cdef extern from "cssor.h":
void cssor(double *U, int m, int n, double omega, double tol, int maxiters, int *info)
cpdef cyssor(double[:, ::1] U, double omega, double tol, int maxiters, int *info):
cdef int n, m
m = U.shape[0]
n = U.shape[1]
cssor(&U[0, 0], m, n, omega, tol, maxiters, &info)
然而,當我嘗試運行相關的安裝文件,我得到一個錯誤引用maxiters在最後代碼的行,上面寫着:
無法分配類型「詮釋**」輸入「詮釋*」
你能告訴我如何解決這個問題嗎?
羅伊·羅斯
變化'&info'爲'info'。 – univerio
要回答這個問題,需要經過比重現問題所需的更多的代碼。雖然你這次得到了答案,但如果你最小化你的例子,你很可能在未來得到更好的答案。 – Veedrac