我在C中有一个函数是这样的:
源文件
// foo.cpp
int foo(int input1, double *output1, int size1, int* output2, int size2)
{
// does stuff and allocate space for output1 and output2
return 0;
}
头文件
^{pr2}$在Cython中,我需要将output1
和{foo.pyx
中,我要执行以下步骤:
cdef extern from "foo.h":
cdef int foo(int input1, double* output1, int size1, double* output2, int size2)
cdef double* ptnOutput1
cdef int* ptnOutput2
foo(1, ptnOutput1, 10, ptnOutput2, 10)
但是现在我不能得到2np.array
形式的输出。如何将指针ptnOutput1
和ptnOutput2
与两个numpy数组对齐?
我试过np.frombuffer
和np.PyArray_SimpleNewFromData
但没有成功。我总是犯分割错误。
你知道怎么正确地做吗?在
numpy文档提到
您似乎遇到了分段错误,因为您的代码中没有包含import\u数组。在
import_array
的内部机制比您预期的要复杂,因为它实际上是一个非常长的宏,而不是一个普通函数。有关详细信息,请参阅this相关问题 更多 >
编程相关推荐