gpt4 book ai didi

c++ - PInvoke 返回带有二维数组的结构

转载 作者:太空狗 更新时间:2023-10-29 20:44:40 24 4
gpt4 key购买 nike

我有在 中定义的结构Win32 DLL 如下所示:

typedef struct matrix
{
double** data;
int m;
int n;
} Matrix;

还有一个函数:

矩阵 getMatrix(void);

Matrix getMatrix()
{
Matrix mat;

mat.m = 2;
mat.n = 2;

mat.data = (double**) malloc (sizeof(double*) * 4);

mat.data[0] = (double* ) malloc (sizeof(double) * 2);
mat.data[1] = (double* ) malloc (sizeof(double) * 2);

mat.data [0][0]=1;
mat.data [0][1]=2;
mat.data [1][0]=3;
mat.data [1][1]=4;

return mat;
}

如果我在 C# 应用程序中使用 P/Invoke,我如何捕获此函数的返回值

最佳答案

我不确定它是否有效,但根据内存:将数据声明为 IntPtr 并使用它:

static double[][] FromNative (IntPtr data, int m,int n)
{
var matrix=new double[m][];

for(int i=0;i<m;i++)
{
matrix[i]=new double[n];
Marshal.Copy(Marshal.ReadIntPtr(data),matrix[i],0,n);
data =(IntPtr)(data.ToInt64()+IntPtr.Size);
}

return matrix;
}

关于c++ - PInvoke 返回带有二维数组的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com