VB调用C++函数解决方法

VB调用C++函数
C++的具体原型不记得了,在C#中调用如下
[DllImport("TagDll.Dll")]
public static extern byte Inventory(byte[] pUID, byte len); 

请问在VB中怎么调用啊?谢谢

------解决方案--------------------

是通过 DLL 库?
------解决方案--------------------
Declare Function Inventory Lib "TagDll.Dll" (pUID As Varaint, ByVal DataLen As Byte) As Byte


------解决方案--------------------
public declare Function Inventory LIB "TagDll.Dll" (byref pUID as byte, byval len as byte) as byte

调用:
ret=Inventory(Arr(0),ubound(arr)+1)'数组下标从0开始
------解决方案--------------------
这样声明:
Declare Function Inventory Lib "TagDll.Dll" ( _
pUID As Any, _
ByVal DataLen As Byte _
) As Byte
调用时大致是这样:
Dim tmpArray() as Byte
Dim rd As Byte
Redim tmpArray(100)
rd = Inventory(tmpArray(0),UBound(tmpArray)+1)
------解决方案--------------------
那有应该是你的 C++ 原型没搞对,你应该把原型放出来。
在VB中声明API函数,掌握几个要点就可以了:
声明 API 函数的函数名(包括大小写)一定要正确
遇到指针类型可以用 Long 类型或 any 类型声明
其他的对应变量体积就可以了
还有就是注意函数是否有返回,如果原型是 void ,在 VB 里就用 Sub
如果原型里有返回类型,VB 里就用 Function 并设置返回类型

至于指针的 Long 和 Any 的使用其实可以理解为地址。
如果用 Long 类型作为指针类型,处理时需要借助API函数操作内存句柄,
而用 Any 类型就可以直接在VB中分配内存区域,并传递内存区域的首地址
给 API 函数,使用时可直接操作VB里定义的变量,不需要借助API来移动
复制内存地址中的内容。

如果上面的声明有问题,你应该检查你的 DLL 是不是在有效的系统位置,
然后看看你的 API 函数名是否声明正确,最后再看看参数是否齐全。
------解决方案--------------------
在VB中函数声明要在模板中声明

也就是说“public declare Function Inventory LIB "TagDll.Dll" (byref pUID as byte, byval len as byte) as byte” 这部分要写在模板中。

“ret=Inventory(Arr(0),cbyte(ubound(arr)+1))”这部分写在你要调用的地方。