Python调用C库函数做计算,出现需要传递多维数组数据时,可以利用多级指针完成数据的传递。在下面示例中,实现了二级和三级指针数据的传递:
C库函数实现数据相加功能,编译库为CDllForPython.dll
extern "C"
{
int CDll_API DoAddPP(int n, int* ni, int** data);
int CDll_API DoAddPPP(int n, int* ni, int** nij, int*** data);
}
int DoAddPP(int n, int* ni, int** data)
{
int res = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < ni[i]; j++)
{
int value = data[i][j];
res = res + value;
}
}
return res;
}
int DoAddPPP(int n, int* ni, int** nij, int*** data)
{
int res = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < ni[i]; j++)
{
for (int k = 0; k < nij[i][j]; k++)
{
int value = data[i][j][k];
res = res + value;
}
}
}
return res;
}
Python实现数组转为二级指针和三级指针,调用C库函数
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import platform
import ctypes
class CApi:
# 初始化类
def __in