有一个vb的api接口如下,
ublic Type Params
port As String * 3
CtrlID As String * 3
Params As String * 1024
iPort As String * 4
IP As String * 15
End Type
Public Declare Function OpenComm Lib "CM60.DLL" (ByRef lParam As Params, ByVal sType As Integer) As Integer
我改成C#下的接口如下:
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
private struct Param
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
public string Port;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
public string CtrlID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
public string Params;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string IPPort;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 15)]
public string IPAddr;
}
private int sType = 401;
[DllImport("CM60.dll")]
private static extern int OpenComm(ref Param par,int stype);
改好后,调用时一直报错,请各位帮忙看一下,错误如下:对 PInvoke 函数“XJFroms!XJFroms.Vegetable.Veg_exit::OpenComm”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。API
ublic Type Params
port As String * 3
CtrlID As String * 3
Params As String * 1024
iPort As String * 4
IP As String * 15
End Type
Public Declare Function OpenComm Lib "CM60.DLL" (ByRef lParam As Params, ByVal sType As Integer) As Integer
我改成C#下的接口如下:
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
private struct Param
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
public string Port;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
public string CtrlID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
public string Params;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string IPPort;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 15)]
public string IPAddr;
}
private int sType = 401;
[DllImport("CM60.dll")]
private static extern int OpenComm(ref Param par,int stype);
改好后,调用时一直报错,请各位帮忙看一下,错误如下:对 PInvoke 函数“XJFroms!XJFroms.Vegetable.Veg_exit::OpenComm”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。API
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货