vb调用c写dll的问题,谢谢!(高分请进)

aningok 2003-11-10 08:39:25
c中是这样定义的,返回void *

void* WINAPI getDetail(STRING info, int detail, int *len, int* errcode)

在vb中:

Declare Function getDetail Lib "test.dll" (ByVal info As String, ByVal detail As Long, length As Long, errcode As Long) As Long

返回值该怎么定义呢?As Long 好像不行?

请高手不吝赐教!!
...全文
35 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
flc 2003-11-12
  • 打赏
  • 举报
回复
up
aningok 2003-11-11
  • 打赏
  • 举报
回复
as any 编译通不过。
请大家继续!!谢谢
rainstormmaster 2003-11-10
  • 打赏
  • 举报
回复
//用any 好像不行。假如返回的是字节指针,也知道长度,请问如何操作返回的ANY 值?
用copymemory进行内存拷贝,声明:
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)


大致这样:
dim i as long
dim buff() as byte
i=字串长度
redim buff(i-1)
CopyMemory buff(0),字串地址,i


在用之前可能需要分配内存
aningok 2003-11-10
  • 打赏
  • 举报
回复
多谢各位参与!!!
to xiaohei728 :麻烦兄弟你帮忙查查啊!!
to little_tao_tao : 用any 好像不行。假如返回的是字节指针,也知道长度,请问如何操作返回的ANY 值?
to rainstormmaster,subzero : 可能是我写得不够清楚,让你们误会了。dll中函数返回的是void * ,不是void,就是说可能返回指向任何类型的指针。

多谢!!
subzero 2003-11-10
  • 打赏
  • 举报
回复
Declare sub getDetail Lib "test.dll" (ByVal info As String, ByVal detail As Long, byval length As Long, byval errcode As Long)
rainstormmaster 2003-11-10
  • 打赏
  • 举报
回复
Declare sub getDetail Lib "test.dll" (ByVal info As String, ByVal detail As Long, length As Long, errcode As Long)
little_tao_tao 2003-11-10
  • 打赏
  • 举报
回复
用ANY类型
xiaohei728 2003-11-10
  • 打赏
  • 举报
回复
无返回值类型就是不能用long类型来接收的
它具体用什么类型的来接收不好意思我记不清了
好像是ALL类型无定义型VB 中有一种类型是可以接收任何类型的数据
无返回型也可以的

7,732

社区成员

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

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