一个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 IntegerDim Data As Variantb = SSIConnect1.GetDecodeData(Data, vbString, code)
If b > 0 Then
DecodeData = Data
Else
DecodeData = "Zero Length Decode Data"
End IfEnd 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就是返回值。
现在总是报错,不知道是哪一个参数出了问题,该怎样改正,高手赐教。
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 IntegerDim Data As Variantb = SSIConnect1.GetDecodeData(Data, vbString, code)
If b > 0 Then
DecodeData = Data
Else
DecodeData = "Zero Length Decode Data"
End IfEnd 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就是返回值。
现在总是报错,不知道是哪一个参数出了问题,该怎样改正,高手赐教。
解决方案 »
- 多线程Thread是否可以传参数?可以的话应该怎么传?希望哪位高手能指导下。在线等。
- C#语言:将EXCEL表格中的数据复制到dataTable中,然后用dt.rows.count统计的数据条数与EXCEL中的实际数据条数不符。
- 救命求教!
- winform下listbox绑定datareader数据源的问题
- 怎样设置splitcontainer中splitter的颜色
- 请问高手,为什么js对只读的控件操作的结果反应不到后台呢
- 有没有人对drm比较熟的啊
- 我想做到QQ一样自动隐藏
- 这是一个查五笔字形编码的小软件,但我认为它是一个精品软件,请高手(如果知道的话)给在下讲一下它的运行原理。
- 怎么用代码来生成EXE
- DLL中两个类中同名函数在调用时如何区分?
- listview求协助
CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int inquire(ref string[] buffER);
C#我印象中必须调用托管的Com
Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))