我在C#.Net中想调用VC写的DLL,
VC中定义一个结构体
struct ReportStr
{
int  sequencenumber1;
int  sequencenumber2;
int  sequencenumber3;
// char    usernumber[10];//行1
BYTE    state;
BYTE    errcode;
};
函数是 
ReportStr getReportStr()
{
ReportStr sReport;
sReport.sequencenumber1 = 1;
sReport.sequencenumber2 = 2;
sReport.sequencenumber3 = 3;
// memcpy(sReport.usernumber, "1234567890",22);//行2
sReport.state = 11;
sReport.errcode = 0;
return sReport;
}
我在C#.Net中定义了结构体
public struct ReportStr
{ public int  sequencenumber1;
public int  sequencenumber2;
public int  sequencenumber3;
// public sbyte  []usernumber;//行3
public byte    state;
public byte    errcode;
};
C#.NET中调用时代码如下 :
ReportStr sReport = GetReportStr();问题是如果,
我在VC结构体中不定义 char usernumber[10];
在.NET中也不定义public sbyte  []usernumber;
那么一切正常,返回的结构体能正常使用.可是我定义 了//行1,//行3,那么结果就不能得到了.
错误信息:方法的类型签名与 PInvoke 不兼容
可是DLL是第三方给提供的,无法更改,只能在.NET中想办法去处理.
大家有什么好一些的办法吗.
注:如果我在VC中定义char usernumber[10]; 在.NET中定义10个 sbyte 成员是可以得到的,
但是我感觉应该还有更好的办法吧.请大家多提一下自己的看法.