VB中调用VC写的DLL,需要一个数组首地址作为参数(对数组有读写操作),以ByRef传递。。。。

Gold_Eg 2002-01-04 02:06:27
VB中调用VC写的DLL,需要一个数组首地址作为参数(对数组有读写操作),以ByRef传递,但只是第一个元素内容正确,为什么?
...全文
98 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bardo 2002-01-04
  • 打赏
  • 举报
回复
你没有传入指针.
如函数:
Declare Function YourFunc(LpArray as long)as long
则调用时:

Dim NewArray() as String
'Pointer to NewArray
Dim lpNewArray as long
'取指针:
lpNewArray =VarPtr(NewArray(0)) '要看你定义的最小一标,如是则改为1
'调用函数:
Call YourFunc(ByVal lpNewArray) '想一想, 为什么要用: ByVal

答案:

ByVal 函数定义时使用, 则是实参(值传递)
调用时使用, 则是指定指针, 这里如不使用ByVal 则传入了指针的指针!!!
(因为VB 的"ByvRef"与VC的"&"相同),用此即可避免.

给分吧!!

206

社区成员

发帖
与我相关
我的任务
社区描述
IBM 开发者
社区管理员
  • IBM开发者社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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