调用com控件遇到的问题,在线等!

zhangwenqian 2010-08-25 03:04:21
vb编写的自定义控件,函数原型为:
Function GetDecodeData(DecodeData, Type As Integer, SSICode As Integer) As Long
Member of SSICONNECTLib.SSIConnect

c#引用里面添加引用,双击引用,查到对应的函数为:
public virtual int GetDecodeData(ref object decodeData, short type, ref short sSICode)
AxSSICONNECTLib.AxSSIConnect 的成员

c#程序里面调用该方法,
public const Int16 vbString = 8;
...
...
...
int status = 0;
Int16 code = 0;
object data = new object();

status = axSSIConnect1.GetDecodeData(ref data, vbString, ref code);

程序执行到该函数的时候,总是报错,如下:
Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))


网上查阅一些资料,应该是第一个参数有问题,Variant 和 object 应该怎样转换,求解。


...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangwenqian 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mjp1234airen4385 的回复:]
DecodeData是什么类型的数据??
是否要把DecodeData定义出来。
[/Quote]

是条码,应该是字符串,但是简单定义字符串会报错,与dll定义的函数不一致
mjp1234airen4385 2010-08-25
  • 打赏
  • 举报
回复
DecodeData是什么类型的数据??
是否要把DecodeData定义出来。
malun666 2010-08-25
  • 打赏
  • 举报
回复
http://space.itpub.net/12639172/viewspace-557791
Variant 和 object 应该是对应的。具体不明白为什么会报错。
使用的时候需要进行类型转换。
不行的话这样定义一下测试一下:
[MarshalAs(UnmanagedType.AsAny)]
private object primaryFieldResultDataSA;

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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