vb调用vc编写的win32 dll时参数传递的问题

westwin 2002-10-11 03:32:47


vc函数原形是:BOOL APIENTRY RSS7SendMessage(void *msg,WORD size,DWORD delay);
第一个参数我想把vb里的byte类型的数组传给dll,第二个参数是传给dll的数组长度,第三

个参数默认为0;

vb中的声明如下:Public Declare Function RSS7SendMessage Lib "mad32.dll" (msg As

Any, ByVal size As Integer, delay As Long) As Long

具体调用该函数如下:
Dim BufLen As Integer, MsgBuf As byte(50000)
Dim bRet As Long
bRet = RSS7SendMessage(MsgBuf(0), BufLen, 0)

(我想把Msgbuf数组里的所有内容都传递给dll,应该是MsgBuf(0)这么写吧?)

出错提示:dll约定错误!
高手帮忙!
...全文
26 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
shengdesan 2002-10-28
  • 打赏
  • 举报
回复
up
silence 2002-10-28
  • 打赏
  • 举报
回复
给函数加上 _stdcall 就可以了,然后在Def 文件里,加export 你的函数名
westwin 2002-10-23
  • 打赏
  • 举报
回复
up
Eden 2002-10-23
  • 打赏
  • 举报
回复
还Up啥呀?
我说的贴子没找着?
贴名:我的Dll(动态链接库)学习笔记,欢迎大家指正
作者: rivershan (笨猫)(C++/MFC/COM初学者)
所属论坛: VC/MFC 基础类

你的疑惑,这里面应该有解答。
yjmking 2002-10-18
  • 打赏
  • 举报
回复
up
Eden 2002-10-18
  • 打赏
  • 举报
回复
有个贴子才答过这个问题,你找找。
westwin 2002-10-18
  • 打赏
  • 举报
回复
up
hfycl 2002-10-17
  • 打赏
  • 举报
回复
up
westwin 2002-10-17
  • 打赏
  • 举报
回复
以上问题我已经搞定,vc的dll编译的时候,选中 call convention为 _stdcall即可;
再问最后一个问题就结帐:
现在我想用LoadLibrary的办法来调用该dll,可是怎么调用该dll里的函数呢,GetProcAddress能得到dll函数的地址,可是怎么调用呢?
westwin 2002-10-16
  • 打赏
  • 举报
回复
仍旧是调用约定错误........,有没有可能是vc的dll没写好的缘故?
Eden 2002-10-16
  • 打赏
  • 举报
回复
你可以用VC的程序调用着试试。
Eden 2002-10-14
  • 打赏
  • 举报
回复
Debug的时候,DLL放在工程的同一目录下。
打开VB工程时,别从菜单打开VB,直接打开工程。
westwin 2002-10-14
  • 打赏
  • 举报
回复
现在竟然提示 mad32.dll未找到
可我明明放到系统盘下面去了啊.........sos
westwin 2002-10-14
  • 打赏
  • 举报
回复
敢问是不是该dll中所有的export函数都应该用_stdcall作为前缀,这样才能为vb所用?
Eden 2002-10-14
  • 打赏
  • 举报
回复
参数没啥错,
BOOL APIENTRY RSS7SendMessage(void *msg,WORD size,DWORD delay);
好像有点问题。俺这样写过。
LRESULT __declspec( dllexport ) WINAPI MarkAPI_STDCALL(UINT uiID,WPARAM wParam,LPARAM lParam);
westwin 2002-10-14
  • 打赏
  • 举报
回复
我在vb中声明和调用的方式估计没错,是不是vc的这个函数有什么和vb没对应起来的东东
huqitucsdn 2002-10-13
  • 打赏
  • 举报
回复
把vb程序进行编译,然后运行编译好的程序。把编译好的dll放在一个目录下。
zyl910 2002-10-12
  • 打赏
  • 举报
回复
ByVal!
calyforer 2002-10-12
  • 打赏
  • 举报
回复
我好象是用的Long型吧,呵呵
zyl910 2002-10-11
  • 打赏
  • 举报
回复
To calyforer(无心):ByVal msg As Long的时候才能那样用

====================================================================
Public Declare Function RSS7SendMessage Lib "mad32.dll" (msg As Any, ByVal size As Integer, ByVal delay As Long) As Long


Dim BufLen As Integer, MsgBuf() As byte
Dim bRet As Long

BufLen=50000
ReDim MsgBuf(0 to BufLen-1) '这样才是50000个元素

bRet = RSS7SendMessage(MsgBuf(1), BufLen, 0)

加载更多回复(6)

7,763

社区成员

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

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