1. 把结构体定义转换[StructLayout(LayoutKind.Sequential, Pack = 1)] // 这里按照你原来代码的方式写
public struct strUp
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte OpType[2]; //操作类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte TrType[2]; //交易类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte Reserved[48];
}[StructLayout(LayoutKind.Sequential, Pack = 1)] // 这里按照你原来代码的方式写
public struct strDown
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte OpType[2]; //操作类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte TrType[2]; //交易类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte Reserved[48];
}
2. 声明dll中的函数
[DllImport("myDll.dll", EntryPoint = "myMethod")]
private static extern EnumMessageType myMethod (int i, out strUp, out strDown);试试行不行吧
public struct strUp
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte OpType[2]; //操作类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte TrType[2]; //交易类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte Reserved[48];
}[StructLayout(LayoutKind.Sequential, Pack = 1)] // 这里按照你原来代码的方式写
public struct strDown
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte OpType[2]; //操作类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte TrType[2]; //交易类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte Reserved[48];
}
2. 声明dll中的函数
[DllImport("myDll.dll", EntryPoint = "myMethod")]
private static extern EnumMessageType myMethod (int i, out strUp, out strDown);试试行不行吧
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货