用C写了个DLL,接口函数有3个
两个unsigned short型的一维数组和一个unsigned int型的二维数组
VB里用的数据类型是LONG
但是一直报错:ByRef argument type mismatch
不管怎么弄都不行,换Integer也不行,long和integer一起用也不行
总是数据类型不匹配!
求解怎么搞啊?整个程序都弄好了,就差这个传参了,老是给我不匹配,我都无奈了!还有,VB往C传数组形参时候是不是也只用数组名,代表地址就OK了?一维、二维都是这样?
谢谢!

解决方案 »

  1.   

    你得先知道unsigned short和unsigned int所占的字节长度,不同的编译器所占的长度是不一样的,你先在C的环境中测试一下它们的长度,然后再在VB中找相应类型。
      

  2.   


    主要检查你调用和Declare声明的数据类型是否一致,最好把代码贴出来,你这样说,只能告诉你,你调用位置和Declare位置声明的参数类型不一致,(还没有涉及到是否和函数体得参数是否一致)
      

  3.   

    1、数组参数要带括号:function xx(a() as integer) as integer2、记得API调用传数组时,是传数组首个元素的地址,而不是数据名。
      

  4.   

    谢谢各位的回答
    我百度了半天,终于找到办法解决了
    和Chinaboyzyq说的差不多
    不过我对VB真的不熟,还不知道调用DLL时候是否正确
    现在问题又来了,又要开一贴……
    这两天我都快成VB版的“问题达人”了