DLL中返回指向结构体的指针,在VB中应该调用呢?

flyinskysea 2003-10-22 09:11:59
DLL中输出如下函数,其中SCB是结构体
_declspec(dllexport) SCB * CALLBACK WINAPI ss_init(int);
_declspec(dllexport) int CALLBACK WINAPI ss_accept(SCB *);

Private Declare Function ss_init Lib "d:\ss.dll" (ByVal sock As Long) As Variant
Private Declare Function ss_accept Lib "d:\ss.dll" (ByRef scb As Any) As Variant
总是报错说DLL调用约定错误,改为下面形式后,又总是发生内存溢出导致VB死机
Private Declare Function ss_init Lib "d:\ss.dll" (ByVal sock As Long) As Long
Private Declare Function ss_accept Lib "d:\ss.dll" (ByRef scb1 As Any) As Long
...全文
83 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
TechnoFantasy 2003-10-22
  • 打赏
  • 举报
回复
对于前者,返回的是一个指针,你需要使用CopyMemory函数将其拷贝到VB中定义的SCB类型的变量中,对于后者,只要定义了SCB结构,然后定义 scbl As Any 并且传递一个SCB类型的变量就可以了,但是如果SCB中的结构比较复杂的话可能会导致内存问题,需要首先看看SCB 是怎么定义的。
射天狼 2003-10-22
  • 打赏
  • 举报
回复
定义一个结构体~~
脆皮大雪糕 2003-10-22
  • 打赏
  • 举报
回复
vb里面也定义一个结构体,和dll的结构体相同,然后用这个结构体代替“any”试试

7,789

社区成员

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

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