我在 C++ 中有以下结构:
#define MAXCHARS 15
typedef struct
{
char data[MAXCHARS];
int prob[MAXCHARS];
} LPRData;
以及我正在调用/调用的函数以获取其中 3 个结构的数组:
void GetData(LPRData *data);
在 C++ 中,我会做这样的事情:
LPRData *Results;
Results = (LPRData *)malloc(MAXRESULTS*sizeof(LPRData));
GetData( Results );
它会工作得很好,但在 C# 中我似乎无法让它工作。我创建了一个这样的 C# 结构:
public struct LPRData
{
/// char[15]
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 15)]
public string data;
/// int[15]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15)]
public int[] prob;
}
如果我初始化其中 3 个数组(以及它们的所有子数组)并将其传递给它:
GetData(LPRData[] data);
它返回成功,但 LPRData 数组中的数据没有改变。
我什至尝试创建一个大小为 3 个 LPRData 的原始字节数组,并将其传递给这样的函数原型:
获取数据(字节 [] 数据);
但在这种情况下,我将从第一个 LPRData 结构中获取“数据”字符串,但之后没有任何内容,包括来自同一 LPRData 的“prob”数组。
关于如何正确处理这个问题的任何想法?