我在C++下面的结构:元帅C++结构阵列到C#
#define MAXCHARS 15
typedef struct
{
char data[MAXCHARS];
int prob[MAXCHARS];
} LPRData;
和一个函数,我是P /调用到获得的这些结构的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的大小并传递到一个函数原型如下:
的GetData(字节[]数据);
但是在这种情况下,我会从第一个LPRData结构中获取“数据”字符串,但后面什么也没有,包括来自同一个LPRData的“prob”数组。
如何正确处理这个问题的任何想法?
应该第11行:如果运行64位,则将`+ =`改为`=`和将`ToInt32`改为`ToInt64`;或者,去掉`value.ToInt32()`? – maxwellb 2010-07-08 19:20:03
@maxwellb,是的。所写的代码不是64位安全的。 – JaredPar 2010-07-08 19:59:45