高分求助,高手来,在线等,希望今天可以解决!!!
一个com控件,名字叫SSIConnect,其中的一个函数,在c#里调用总是报错。
c++ 里面的函数如下:
long CSSIConnect::GetDecodeData(VARIANT* DecodeData, short Type, short* SSICode)
{
long result;
static BYTE parms[] =
VTS_PVARIANT VTS_I2 VTS_PI2;
InvokeHelper(0x11, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
DecodeData, Type, SSICode);
return result;
}
VB里面引用该控件,函数的定义为:
Function GetDecodeData(DecodeData, Type As Integer, SSICode As Integer) As Long
Member of SSICONNECTLib.SSIConnect
调用语句为:
Private Sub SSIConnect1_DecodeDataAvailable(ByVal Length As Long)
Dim b As Long
Dim code As Integer
Dim Data As Variant
b = SSIConnect1.GetDecodeData(Data, vbString, code)
If b > 0 Then
DecodeData = Data
Else
DecodeData = "Zero Length Decode Data"
End If
End Sub
c#引用该控件,函数的定义为:
public virtual int GetDecodeData(ref object decodeData, short type, ref short sSICode)
AxSSICONNECTLib.AxSSIConnect 的成员
c# 调用该函数如下,红色字体为调用语句:
private void axSSIConnect1_DecodeDataAvailable(object sender, AxSSICONNECTLib._DSSIConnectEvents_DecodeDataAvailableEvent e)
{
int status = 0;
Int16 code = 0;
object data = new object();
this.timer1.Enabled = false;
try
{
status = axSSIConnect1.GetDecodeData(ref data, vbString, ref code);
}
catch (Exception ex) { }
if (status > 0)
{
this.textBoxDecodeData.Text = "The Barcode is: " + data.ToString();
}
else
{
textBoxDecodeData.Text = "Zero Length Decode Data";
}
this.timer1.Enabled = true;
}
中间那个参数vbstring是从vb里面来的,代表返回值是string类型,查了一下VB,用8代替,第一个参数data就是返回值。
现在总是报错,不知道是哪一个参数出了问题,该怎样改正,高手赐教。