开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3437|回复: 16
收起左侧

[精币悬赏] 易语言 调用C++DLL,指针做参数,应该如何写??

[复制链接]
结帖率:0% (0/2)
发表于 2022-5-8 07:23:00 | 显示全部楼层 |阅读模式   山东省滨州市
60精币
DLL文件中的函数定义如下:
NET_DVR_SendWithRecvRemoteConfigLONG NET_DVR_SendWithRecvRemoteConfig(
  LONG     lHandle,  void     *lpInBuff,  DWORD    dwInBuffSize,  void     *lpOutBuff,  DWORD    dwOutBuffSize,  DWORD    *dwOutDataLen);在易里面我是如下定义的DLL:

这个指针参数,我看C#调用这个DLL的时候是如下语句:
dwState = NET_DVR_SendWithRecvRemoteConfig(m_lSetCardCfgHandle, &sSearchUserCond, sizeof(sSearchUserCond), &lpOutBuff, sizeof(lpOutBuff), &dwOutDataLen);
用的是取址符&,所以我在易里也用:取变量地址,如下:
NET_DVR_SendWithRecvRemoteConfig (程序集_长链接句柄, 取变量地址 (inbuffer), 1024, 取变量地址 (outbuffer), 2048,取变量地址(len))
但是程序却崩溃了,求教,在易里面应该如何写????


结帖率:90% (27/30)

签到天数: 1 天

发表于 2022-5-8 08:25:10 | 显示全部楼层   云南省昆明市
要在库命令前加@符号  易语言是__stdcall
回复

使用道具 举报

签到天数: 1 天

发表于 2022-5-8 08:45:07 | 显示全部楼层   广东省广州市

inbuffer 内存空间必须满足 1024 个字节
outbuffer 内存空间必须满足 2048 个字节
回复

使用道具 举报

结帖率:0% (0/2)
 楼主| 发表于 2022-5-8 09:04:29 | 显示全部楼层   山东省滨州市
啊基德 发表于 2022-5-8 08:25
要在库命令前加@符号  易语言是__stdcall

也加过,一样崩溃。
回复

使用道具 举报

结帖率:0% (0/2)
 楼主| 发表于 2022-5-8 09:06:53 | 显示全部楼层   山东省滨州市
大司命 发表于 2022-5-8 08:45
inbuffer 内存空间必须满足 1024 个字节
outbuffer 内存空间必须满足 2048 个字节 ...

我把DLL调用语句改成了如下:
str = “{” + #引号 + “UserInfoSearchCond” + #引号 + “: {” + #引号 + “searchResultPosition” + #引号 + “:0,” + #引号 + “maxResults” + #引号 + “:30}}”
inbuffer = 到字节集 (str)
outbuffer = 取空白字节集 (2048)
len = -100
NET_DVR_SendWithRecvRemoteConfig (程序集_长链接句柄, inbuffer, 取字节集长度 (inbuffer), outbuffer, 2048, len)
但还是崩

点评

这个海康的有文档吗   云南省昆明市  发表于 2022-5-8 09:18
回复

使用道具 举报

结帖率:0% (0/2)
 楼主| 发表于 2022-5-8 09:44:11 | 显示全部楼层   山东省滨州市
tltianlei 发表于 2022-5-8 09:06
我把DLL调用语句改成了如下:
str = “{” + #引号 + “UserInfoSearchCond” + #引号 + “: {” + ...

有文档,但我无法上传,我给您个链接,麻烦您下载:
https://open.hikvision.com/fileserver/resourcedocsonline/%E8%AE%BE%E5%A4%87%E7%BD%91%E7%BB%9CSDK%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C_20220418171552.zip
回复

使用道具 举报

结帖率:0% (0/2)
 楼主| 发表于 2022-5-8 09:44:55 | 显示全部楼层   山东省滨州市
啊基德 发表于 2022-5-8 08:25
要在库命令前加@符号  易语言是__stdcall

有文档,但我无法上传,我给您个链接,麻烦您下载:
https://open.hikvision.com/fileserver/resourcedocsonline/%E8%AE%BE%E5%A4%87%E7%BD%91%E7%BB%9CSDK%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C_20220418171552.zip

点评

在调用该接口之前,必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄 前面句柄有吗   云南省昆明市  发表于 2022-5-8 10:04
回复

使用道具 举报

结帖率:0% (0/2)
 楼主| 发表于 2022-5-8 11:00:45 | 显示全部楼层   山东省滨州市
tltianlei 发表于 2022-5-8 09:44
有文档,但我无法上传,我给您个链接,麻烦您下载:
https://open.hikvision.com/fileserver/resourcedoc ...

也有建立长链接DLL
inbuffer = “POST /ISAPI/AccessControl/UserInfo/Search?format=json”
程序集_长链接句柄 = NET_DVR_StartRemoteConfig (用户ID, 2550, 到字节集 (inbuffer), 取文本长度 (inbuffer), &空子程序, puser)
这句运行是成功的。
回复

使用道具 举报

结帖率:90% (27/30)

签到天数: 1 天

发表于 2022-5-8 15:29:05 高大上手机用户 | 显示全部楼层   云南省昆明市
tltianlei 发表于 2022-5-8 11:00
也有建立长链接DLL
inbuffer = “POST /ISAPI/AccessControl/UserInfo/Search?format=json”
程序集_长 ...

最后一个参数你写的多少
回复

使用道具 举报

结帖率:0% (0/2)
 楼主| 发表于 2022-5-8 15:46:48 | 显示全部楼层   山东省滨州市
啊基德 发表于 2022-5-8 15:29
最后一个参数你写的多少

最后一个pUser 是一个整数型变量,在DLL定义表里面,也把它设置为一个整数型+传址。这个DLL命令没有出错,运行正常。
最好麻烦您帮我写一个例子让我看一下,我是刚接触DLL,不太懂,更不懂指针了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表