关于结构赋值的问题,高手进
[StructLayout(LayoutKind.Sequential)]
struct TGlobalData
{
public int AppHandle;
public int Login;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public char[] Master;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
}
这是我定义的一个结构。往里面赋值后,给Dellp写的dll调用,就会报数组越界的问题。请问什么问题;我这样赋值的:
TGlobalData gdata = new TGlobalData();
string strMaster = "master ";
gdata.Master = strMaster.ToCharArray();
------解决方案--------------------换成byte[]看看
其他dll里的char估计是1个自己,而C#中的char是两个字节
public byte[] Master;
[StructLayout(LayoutKind.Sequential)]
struct TGlobalData
{
public int AppHandle;
public int Login;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public byte[] Master;
}
private void button1_Click(object sender, EventArgs e)
{
TGlobalData gdata = new TGlobalData();
string strMaster = "master ";
gdata.Master = Encoding.Default.GetBytes(strMaster);
}
------解决方案--------------------Dellp?是啥?DELL笔记本P?
原始声明是怎样的?
------解决方案--------------------还是没有看到DLL函数接口原始的声明
function fname(param: TGlobalData): Boolean; ??
还有C#中的函数声明??
Delphi的默认函数参数调用方式是pascal
C#里是stdcall
有没有Delphi里的调用例子?
------解决方案--------------------up