Foxtable(狐表)用户栏目专家坐堂 → 关于引用dll的问题


  共有4559人关注过本帖树形打印复制链接

主题:关于引用dll的问题

帅哥哟,离线,有人找我吗?
有点甜
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/28 12:09:00 [只看该作者]

Public Declare Function INIT Lib "SiInterface.dll" Alias "INIT"(pErrMsg) As Integer

 

改成

 

Public Declare Function INIT Lib "SiInterface.dll" Alias "INIT"(byref pErrMsg as string) As Integer

 

或者试试

 

Public Declare Function INIT Lib "SiInterface.dll" Alias "INIT"(byref pErrMsg as stringbuilder) As Integer

 

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

 

调用的时候,试试

 

Dim S3 As new stringbuilder
Dim S2 As Integer = Init(S3)
msgbox(S2)

 


 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/12/28 14:45:00 [只看该作者]

我把所有的dll文件都放在 d:\foxtable\development\下面了 (foxtable 安装路径) ,并且全局代码这样写的:

Public Declare Function INIT Lib "DLL\SiInterface.dll" Alias "INIT"(byref pErrMsg As stringbuilder) As Integer
Public Declare Function BUSINESS_HANDLE Lib "DLL\SiInterface.dll" Alias "BUSINESS_HANDLE"(InputData As String,OutputData As String) As Integer

结果运行测试,报下面的错误。



没有找到:D:\foxtable2017项目\医保业务测试\医保业务测试\SSSE32.dll     (项目文件所在路径)



但如果我把所有的dll都放在项目所在目录下面,就能成功执行。
[此贴子已经被作者于2017/12/28 14:52:04编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/28 14:50:00 [只看该作者]

先尝试把所有dll,都放在foxtable安装目录根目录下。然后测试各个功能。


 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/12/28 14:52:00 [只看该作者]

但如果我把所有的dll都放在项目所在目录下面,就能成功执行。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/28 14:59:00 [只看该作者]

以下是引用ycwk在2017/12/28 14:52:00的发言:
但如果我把所有的dll都放在项目所在目录下面,就能成功执行。

 

如果直接放在foxtable安装目录根目录下呢?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/28 15:00:00 [只看该作者]

如果确实不行,那就是不支持 子目录/相对目录 了吧。

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/12/28 15:19:00 [只看该作者]

现在测试另外一个函数,S_in 字符串内容肯定没问题
Dim S_in As String
Dim S_out As String
S_in="9100^301^admin^^201712281506010000^0000^^18DBF25B021A|88|1016|2002|^"       
Dim Sresult Integer =  BUSINESS_HANDLE(S_in,S_out)


报如下错误:


---------------------------
错误
---------------------------
编译错误:应为语句结束。



错误代码:Dim Sresult Integer =  BUSINESS_HANDLE(S_in,S_out)
---------------------------
确定   
---------------------------



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/28 15:20:00 [只看该作者]

Dim Sresult as Integer =  BUSINESS_HANDLE(S_in,S_out)

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/12/28 15:33:00 [只看该作者]

报这个错,是动态库引用的问题,还是?



System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

   在 UserCode.BUSINESS_HANDLE(String& InputData, String& OutputData)

   在 UserCode.Test()
---------------------------
确定   
---------------------------


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/28 15:35:00 [只看该作者]

改成

 

Public Declare Function BUSINESS_HANDLE Lib "DLL\SiInterface.dll" Alias "BUSINESS_HANDLE"(ByRef InputData As String, ByRef OutputData As String) As Integer
 
或者
 
Public Declare Function BUSINESS_HANDLE Lib "DLL\SiInterface.dll" Alias "BUSINESS_HANDLE"(ByRef InputData As StringBuilder, ByRef OutputData As StringBuilder) As Integer


 回到顶部
总数 42 上一页 1 2 3 4 5 下一页