我使用Swig将python与C代码进行接口。在
我想调用一个C函数,它接受一个包含int**var的结构作为参数:
typedef struct
{
(...)
int** my2Darray;
} myStruct;
void myCFunction( myStruct struct );
我在和多维数组做斗争。在
我的代码如下:
在接口文件中,我是这样使用carray的:
^{pr2}$在python中,我有:
myStruct = myModule.myStruct()
var = myModule.intArrayArray(28)
for j in range(28):
var1 = myModule.intArray(28)
for i in range(28):
var1[i] = (...) filling var1 (...)
var[j] = var1
myStruct.my2Darray = var
myCFonction( myStruct )
我在myStruct.my2Darray = var
行上得到一个错误:
TypeError: in method 'maStruct_monTableau2D_set', argument 2 of type 'int **'
我对%array_class( intArray, intArrayArray )
这一行表示怀疑。
我尝试使用int*
的typedef创建如下数组:
%array_class( myTypeDef, intArrayArray );
但似乎没用。在
你知道如何在Swig中处理多维数组吗?在
谢谢你的帮助。在
这就是我处理二维数组的方法。我使用的技巧是编写一些内联代码来处理数组的创建和变异。一旦完成,我就可以使用这些函数来完成我的出价。在
下面是示例代码。在
dArray.我
ddarray.c
^{pr2}$示例Python脚本
你考虑过用numpy来做这个吗?我已经用NoMIP和我的Sigg包裹的C++项目来做一个二维、STD:一维的、二维的和3D的数组:复杂的元素,取得了很大的成功。在
您需要get numpy.i并在python环境中安装numpy。在
下面是一个如何构建它的示例:
.i文件:
.h文件:
^{pr2}$.cpp文件:
.py文件:
相关问题 更多 >
编程相关推荐