vb调用delphi的dll问题啊

yxlyq_117 2011-06-19 09:23:55
delphi的dll接口函数function NetInit(mhandle:THandle,msg:Longword):integer;stdcall在vb里该怎么写啊
我写成:Public Declare Function NetInit Lib "NetClient.dll" (ByVal hMem As Long, ByRef msg11 As Long) As Long
都是不行啊.求前辈们帮忙了
...全文
187 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
liweixing 2011-08-15
  • 打赏
  • 举报
回复
delphi编写动态库时,传出参数要用指针。
gh54321 2011-06-28
  • 打赏
  • 举报
回复
zhuang_bx 回答正确
rainychan2009 2011-06-19
  • 打赏
  • 举报
回复
确保参数调用方式一致。
山东蓝鸟贵薪 2011-06-19
  • 打赏
  • 举报
回复
必须将DELPHI编写的DLL标准化,才能在"任何语言"中调用即可
SQLDebug_Fan 2011-06-19
  • 打赏
  • 举报
回复
VB里面有没有加stdcall,这样采样正确初始化和回收栈。
山东蓝鸟贵薪 2011-06-19
  • 打赏
  • 举报
回复
就是结构标准化>>>>>>>>>>>>>>>>>.
yxlyq_117 2011-06-19
  • 打赏
  • 举报
回复
//mhandle:接收消息的窗口句柄
//msg:消息值
//Msg.WParam的值:
// $0001; //网络错误消息
// $0002; //网络连接成功
// $0003; //网络连接断开
// $0004; //网络网络关闭

function NetInit(mhandle:THandle;msg:Longword):integer;stdcall;

这是完整的,msg对应的是返回参数,在vb里应该是:byref吧,况且就按byval也是不对,Longword是32位吧?

Public Declare Function NetInit Lib "NetClient.dll" (ByVal hMem As Long, ByRef msg As Long) As Long

调用时:
dim j as long
dim msg as long
j = NetInit(Me.hWnd, msg)

j总是返回-1 调用不成功 ,要返回0就可以了
把哪个bytef改成byval也是不行,不知道问题出在哪里?
yxlyq_117 2011-06-19
  • 打赏
  • 举报
回复
//mhandle:接收消息的窗口句柄
//msg:消息值
//Msg.WParam的值:
// $0001; //网络错误消息
// $0002; //网络连接成功
// $0003; //网络连接断开
// $0004; //网络网络关闭

function NetInit(mhandle:THandle;msg:Longword):integer;stdcall;

这是完整的,msg对应的是返回参数,在vb里应该是:byref吧,况且就按byval也是不对,Longword是32位吧?
v1srine 2011-06-19
  • 打赏
  • 举报
回复
.UP!!!!!
zhuang_bx 2011-06-19
  • 打赏
  • 举报
回复
function NetInit(mhandle:Longword;msg:Longword):Longword;stdcall

Public Declare Function NetInit Lib "NetClient.dll" (ByVal hMem As Long, ByVal msg As Long) As Long
hongss 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sgzhou12345 的回复:]
必须将DELPHI编写的DLL标准化,才能在"任何语言"中调用即可
[/Quote]
+1

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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