以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]帮我看看这个dll调用失败是哪里错了  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=96860)

--  作者:jolay0827
--  发布时间:2017/3/1 10:45:00
--  [求助]帮我看看这个dll调用失败是哪里错了
1、VB下的函数调用声明
 
Private Declare Function mbtcpConnect Lib "modbus_tcp.dll" (ByVal nport As Long, ByVal IpPort As Long, ByVal IpAddress As String, ByVal User As String) As Long
 
调用举例: k = mbtcpConnect(0, 502, "85.16.1.1", "wjun")  \'启动0号网络链接,从IP地址85.16.1.1,网络端口502的设备进行通讯     这里是帮助文档里的VB调用说明 



Declare Function mbtcpConnect Lib "modbus_tcp.dll" (ByVal nport As Long, ByVal IpPort As Long, ByVal IpAddress As String, ByVal User As String) As Long   这个是写在fox全局代码里面的



图片点击可在新窗口打开查看mbtcpConnect(0, 502, "85.16.1.1", "wjun")    这个代码是打开端口,我用按键触发这条指令就会出现图片上的错误提示,但是我另外一个自己编写的dll调用可以成功,请教大神指点。
图片点击可在新窗口打开查看此主题相关图片如下:dll调用失败提示.png
图片点击可在新窗口打开查看

--  作者:jolay0827
--  发布时间:2017/3/1 10:48:00
--  
0.0.0
--  作者:有点色
--  发布时间:2017/3/1 11:19:00
--  

1、把dll文件拷贝到foxtable的安装目录下

 

2、全局代码定义

 

public Declare Function mbtcpConnect Lib "modbus_tcp.dll" (ByVal nport As Long, ByVal IpPort As Long, ByVal IpAddress As String, ByVal User As String) As Long  


--  作者:jolay0827
--  发布时间:2017/3/1 11:33:00
--  
还是存在那个错误,还有我是否需要添加这个dll,按照帮助文件里面介绍,我是不要添加的。
--  作者:有点色
--  发布时间:2017/3/1 12:22:00
--  

 对应的dll文件拷贝到foxtable安装文件夹下了吗?

 

 你用什么工具开发调用成功的?


--  作者:jolay0827
--  发布时间:2017/3/1 12:41:00
--  
易语言调用过,
而且我用易语言写了一个dll在fox里调用成功了,不过调用这个modbus的dll文件就不行。

--  作者:有点色
--  发布时间:2017/3/1 12:47:00
--  
 那,你就间接来做囖。通过易语言先调用生成dll,再使用。
--  作者:jolay0827
--  发布时间:2017/3/1 16:18:00
--  
试了下,不过又出现了新的情况,提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”



--  作者:jolay0827
--  发布时间:2017/3/1 17:47:00
--  
是不是我引用变量的时候路径定义错了,不过我按照网上说的那个关掉DEP也不行呀,而且只有12版本的可以关,16版本的还关不掉…………
--  作者:有点色
--  发布时间:2017/3/1 17:56:00
--  

 应该是定义得有问题。string,尽量定义成 stringbuilder

 

http://www.foxtable.com/webhelp/scr/2097.htm