高分求助,高手来,在线等,希望今天可以解决!!!

zhangwenqian 2010-08-10 09:05:13
一个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就是返回值。
现在总是报错,不知道是哪一个参数出了问题,该怎样改正,高手赐教。
...全文
111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyskytoday 2010-08-10
  • 打赏
  • 举报
回复
都能找到老熟人了~~
[Quote=引用 3 楼 cw7600 的回复:]
不是 这个名字很多人的 光成都都有几百号 哈哈~
[/Quote]
[Quote=引用 2 楼 goujun19880912 的回复:]
你是襄樊的陈伟吗?
[/Quote]
jameshooo 2010-08-10
  • 打赏
  • 举报
回复
你应该把IDL/ODL文件关于这个方法的定义贴出来。

按照实现来看,第一个参数不是REF类型,所以在调用时要去掉ref/ByRef关键字。
wysbk002 2010-08-10
  • 打赏
  • 举报
回复
1, 检查函数导出类型 STDCALL CEDCLL
2, 检查是否堆栈对齐
wysbk002 2010-08-10
  • 打赏
  • 举报
回复
STRING 类型不一样吧?
cw7600 2010-08-10
  • 打赏
  • 举报
回复
不是 这个名字很多人的 光成都都有几百号 哈哈~
goujun19880912 2010-08-10
  • 打赏
  • 举报
回复
你是襄樊的陈伟吗?
cw7600 2010-08-10
  • 打赏
  • 举报
回复
C# 和VB不太了解 你可以到VB专区去问下高人~

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧