(急!)如何将一个自定义的结构数组的头指针传递给.dll中的函数

wangxd123 2000-04-20 06:00:00
你好!
我遇到了一个问题!希望你能帮我解决.
我首先需将一个.dll中的函数readCarddir(PFDIR CardDir) ,其中:PFDIR是一个结构:
PFDIR(
int FileID
byte No
byte Access
)
请问:1.我如何在程序中声明readCardDir()函数
2.在vb的程序中我该如何调用它

附:readCarddir(PFDIR CardDir) 函数在被调用后将返回所有能得到的PFDIR结构的数据,并保存在CardDir中,CardDir参数在C语言中是一个 指向自定义结构数组的头指针

希望您能帮助我!
email:wangxd123@163.net
phone:0755-5611571 0755-5627413
...全文
210 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
thriller 2000-04-21
  • 打赏
  • 举报
回复
声明是一样的,不过如果希望得到数组元素的数量,应该在DLL中加一个参数即应为:
readCarddir(PFDIR CardDir,int cNumber)
声明时这样:
declare function "readCarddir" lib ... (CardDir as PFDIR, Byval cNumber as long)?as long
记住:第一个参数没有Byval,而第二个必须有Byval。
另外可以参考我的文章《在VB中使用指针》。
thriller
thriller 2000-04-21
  • 打赏
  • 举报
回复
声明是一样的。
不用怀疑了,快试试吧。
记住!别使用Byval。
唉,想得点分真难。
thriller
请参看《在VB5中使用指针》
wangxd123 2000-04-21
  • 打赏
  • 举报
回复
如果可以这样调用:
dim a(0 to 20) as PFDIR
call readCardDir(a(0))

那么如何进行声明呢,readCarddir(PFDIR CardDir) 中的参数该如何定义呢?
请回复!
谢谢了
原作者

thriller 2000-04-21
  • 打赏
  • 举报
回复
softdoctor说的对。
抱歉马虎了。
你没说传递的是一个自定义结构的数组嘛。
dim a(0 to 20) as PFDIR
call readCardDir(a(0))

OK.
thriller
wangxd123 2000-04-20
  • 打赏
  • 举报
回复
thriller :
首先感谢你的热情!
不过我得再说一遍传递的是一个自定义结构的数组的头指针,而不是一个结构!
原作者:
softdoctor 2000-04-20
  • 打赏
  • 举报
回复
thriller 的

type PFDIR
FileID as integer
Number as byte
Access as byte
end type


FileID as integer
应该改为
FileID as long

好象VB中integer是二字节的
在Windows下C中的int为四字节长
thriller 2000-04-20
  • 打赏
  • 举报
回复
1.我如何在程序中声明readCardDir()函数
declare function "readCarddir" lib ... (CardDir as PFDIR ) as long

type PFDIR
FileID as integer
Number as byte
Access as byte
end type

2.在vb的程序中我该如何调用它
dim a as PFDIR
call readCardDir(a)
如果DLL没问题,以上代码保证运行。
把分给我吧!

7,763

社区成员

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

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