vb.net中使用32位dll中structure参数的问题。

milaoshu1020 活跃的高手 2017-08-03 03:59:04
用的是win10x64系统。
开发环境是vs2017 vb.net wpf。

我想问的是以下调用方式会出现堆栈不平衡,怎么办?
因为参数是直接使用的structure,怀疑调用的时候参数中传递的地址是64位的,
所以造成堆栈问题,如果是这样的话,请问这个问题应该怎么解决?
如果不是这样,请问是哪里的问题,应该如何解决?

结构体声明:
Private Structure POINTAPI
Public x As Integer
Public y As Integer
End Structure

dll函数声明:
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Integer

调用dll函数:
Dim Pt As POINTAPI
GetCursorPos(Pt)
...全文
151 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
milaoshu1020 活跃的高手 2017-08-04
  • 打赏
  • 举报
回复
找到错误原因了,原来是 Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Integer 应该写成 Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Integer 也就是增加一个ByRef参数。 结帖。
milaoshu1020 活跃的高手 2017-08-03
  • 打赏
  • 举报
回复
而且返回的数据也不正确。

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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