dll调用
/*************************************************************Description: //与控制器建立链接
Input: //IP地址,字符串的方式输入
Output: //卡链接handle
Return: //错误码
*************************************************************/
int32__stdcall ZAux_OpenEth(char *ipaddr, ZMC_HANDLE * phandle);
怎么在视窗中引用这个dll,这两个参数类型怎么设置
两个都用变整数。
第一个参数:先用【文本到多字节】或【文本到UTF8】将文本型转码,再【取字节集指针】来传参;
第二个参数:定义一个【变整数】类型的变量,然后【取变量地址】来传参; 本帖最后由 dream7726 于 2026-3-19 20:04 编辑
Xelloss0618 发表于 2026-3-19 17:11
两个都用变整数。
第一个参数:先用【文本到多字节】或【文本到UTF8】将文本型转码,再【取字节集指针】来 ...
https://pan.baidu.com/s/1srtyvpMVbNG4xErVCSS3zQ?pwd=35ne
按照这样调用会报错 怎么回复上传图片???
<火山程序 类型 = "通常" 版本 = 1 />
方法 ZAux_OpenEth <公开 静态 类型 = 整数 @输出名 = "ZAux_OpenEth" @视窗.输入 = "zauxdll.dll" @视窗.附属文件 = "zauxdll.dll">
参数 IP地址 <类型 = 变整数>
参数 句柄指针 <类型 = 变整数 注释 = "输出参数" "">
{
}
方法 按钮_被单击 <接收事件 类型 = 整数 注释 = "当按钮被单击后发送此事件">
参数 来源对象 <类型 = 按钮 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
{
变量 句柄 <类型 = 变整数>
变量 IP地址 <类型 = 文本型>
如果 (来源对象 == 按钮1)
{
IP地址 = "127.0.0.1"
ZAux_OpenEth (取字节集指针 (文本到UTF8 (IP地址)), 句柄)
调试输出 (句柄)
}
返回 (0)
}
错误: 接收到未经处理的严重异常,代码为: 0xE06D7363
被调试程序已经退出,退出码为0xE06D7363.
调试已经停止
dream7726 发表于 2026-3-19 20:02
按照这样调用会报错 怎么回复上传图片???
不是说了么,第二个参数要变量地址。
ZAux_OpenEth (取字节集指针 (文本到UTF8 (IP地址)), 取变量地址 (句柄)) Xelloss0618 发表于 2026-3-19 20:40
不是说了么,第二个参数要变量地址。
ZAux_OpenEth (取字节集指针 (文本到UTF8 (IP地址)), 取变量地址 ( ...
按照这样改还是报错,我就是疑惑怎么通过参数来返回值,像易语言就勾选下参考属性,视窗资料是太少了,查了很多都没找到怎么传?
可以帮写个样例吗?比如一个add方法,有两个参数1(整数)和参数2(这个我不知道写什么类型),然后方法里面写,参数2=参数2+参数1,也就是结果通过参数2返回出去
感谢指导!
有很多PLC程序员英语不好,易语言或火山视窗真的是个好工具,但是生态太少,用易语言2年一般上位机能做,但是现在遇到很多第三方dll是64位,所以开始转学火山视窗 dream7726 发表于 2026-3-20 00:07
按照这样改还是报错,我就是疑惑怎么通过参数来返回值,像易语言就勾选下参考属性,视窗资料是太少了,查 ...
写法应该没问题了啊,是不是DLL的位数不对?
火山的参数,对象是默认参考的,整数等基本类型不参考,所以需要传变量地址,或者用整数类(DLL不能用这个)。
<火山程序 类型 = "通常" 版本 = 1 />
方法 add1 <注释 = "整数类">
参数 参数1 <类型 = 整数>
参数 参数2 <类型 = 整数类>
{
参数2.值 = 参数1 + 参数2.值
}
方法 add2 <注释 = "指针方式">
参数 参数1 <类型 = 整数>
参数 参数2 <类型 = 变整数 注释 = "传参要用[取变量地址]">
{
写指针处值 (参数2, (整数)(参数1 + 读指针处值 (参数2, 整数)))
}
方法 add3 <注释 = "参数引用">
参数 参数1 <类型 = 整数>
参数 参数2 <类型 = 整数 注释 = "传参必须用变量" @视窗.后缀文本 = "&">
{
参数2 = 参数1 + 参数2
}
Xelloss0618 发表于 2026-3-20 00:50
写法应该没问题了啊,是不是DLL的位数不对?
火山的参数,对象是默认参考的,整数等基本类型不参考,所以 ...
太感谢你! 致敬! 你这样写了3个方法都尝试了体验了用法, 终于搞明白这个指针传参了
<火山程序 类型 = "通常" 版本 = 1 />
方法 ZAux_OpenEth <公开 静态 类型 = 整数 注释 = "" 注释 = "建立连接" @输出名 = "ZAux_OpenEth" @视窗.输入 = "zauxdll.dll"
@视窗.附属文件 = "zauxdll.dll">
参数 IP地址 <类型 = 变整数>
参数 句柄 <类型 = 变整数 注释 = "传参要用[取变量地址]" "">
{
}
方法 ZAux_Close <公开 静态 类型 = 整数 注释 = "" 注释 = "断开连接" @输出名 = "ZAux_Close" @视窗.输入 = "zauxdll.dll"
@视窗.附属文件 = "zauxdll.dll">
参数 句柄 <类型 = 长整数>
{
}
方法 ZAux_Direct_GetIn <公开 静态 类型 = 整数 注释 = "" 注释 = "读取输入信号" @输出名 = "ZAux_Direct_GetIn"
@视窗.输入 = "zauxdll.dll" @视窗.附属文件 = "zauxdll.dll">
参数 句柄 <类型 = 变整数>
参数 IN编号 <类型 = 整数>
参数 状态 <类型 = 变整数>
{
}
方法 按钮_被单击 <接收事件 类型 = 整数 注释 = "当按钮被单击后发送此事件">
参数 来源对象 <类型 = 按钮 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
{
变量 句柄 <静态 类型 = 长整数>
变量 IP地址 <类型 = 文本型>
变量 错误码 <类型 = 整数>
变量 读IN编号 <类型 = 整数>
变量 读IN状态 <类型 = 整数>
变量 add1_参数2 <类型 = 整数类>
变量 add3_参数1 <类型 = 整数>
变量 add3_参数2 <类型 = 整数>
变量 add2_参数1 <类型 = 整数>
变量 add2_参数2 <类型 = 整数>
如果 (来源对象 == 测试)
{
// 方法1测试
add1_参数2.值 = 100
add1 (100, add1_参数2)
日志.加入文本 ("方法1测试结果:" + 到文本 (add1_参数2.值) + "\r\n")
// 方法2测试
add2_参数1 = 100
add2_参数2 = 100
add2 (add2_参数1, 取变量地址 (add2_参数2))
日志.加入文本 ("方法2测试结果:" + 到文本 (add2_参数2) + "\r\n")
// 方法3测试
add3_参数1 = 100
add3_参数2 = 100
add3 (add3_参数1, add3_参数2)
日志.加入文本 ("方法3测试结果:" + 到文本 (add3_参数2) + "\r\n")
}
如果 (来源对象 == 启动连接)
{
IP地址 = "127.0.0.1"
错误码 = ZAux_OpenEth (取字节集指针 (文本到UTF8 (IP地址)), 取变量地址 (句柄))
日志.加入文本 ("错误码:" + 到文本 (错误码) + "\r\n")
日志.加入文本 ("句柄:" + 到文本 (句柄) + "\r\n")
}
如果 (来源对象 == 断开连接)
{
日志.加入文本 ("句柄:" + 到文本 (句柄) + "\r\n")
// 错误码 = ZAux_Close (取变量地址 (句柄))
错误码 = ZAux_Close (句柄)
日志.加入文本 ("错误码:" + 到文本 (错误码) + "\r\n")
日志.加入文本 ("断开连接!" + "\r\n")
}
如果 (来源对象 == 读IN)
{
读IN编号 = 0
错误码 = ZAux_Direct_GetIn (句柄, 读IN编号, 取变量地址 (读IN状态))
日志.加入文本 ("错误码:" + 到文本 (错误码) + "\r\n")
日志.加入文本 ("读到IN状态:" + 到文本 (读IN状态) + "\r\n")
}
返回 (0)
}
方法 add1 <公开 静态 注释 = "整数类">
参数 参数1 <类型 = 整数>
参数 参数2 <类型 = 整数类>
{
参数2.值 = 参数1 + 参数2.值
}
方法 add2 <公开 静态 注释 = "指针方式">
参数 参数1 <类型 = 整数>
参数 参数2 <类型 = 变整数 注释 = "传参要用[取变量地址]">
{
// 写指针处值 (参数2, (整数)(参数1 + 读指针处值 (参数2, 整数)))
写指针处值 (参数2, 参数1 + 读指针处值 (参数2, 整数))
}
方法 add3 <公开 静态 注释 = "参数引用">
参数 参数1 <类型 = 整数>
参数 参数2 <类型 = 整数 注释 = "传参必须用变量" @视窗.后缀文本 = "&">
{
参数2 = 参数1 + 参数2
}
页:
[1]