弱弱的请教一下关于调用DLL的问题,请各位帮忙看看

w_lincq 2013-02-07 10:13:48
收到一个加密用的DLL文件,一运行就VB就死掉,实在分析不出来是什么问题,请各位帮帮忙:
提供函数的文档上是:
函数原型:
void gen_digest(char * data ,int data_len,char *str_digest)
参数说明:
data:需要加密的数据项。
data_len:需加密数据长度。
str_digest:对数据加密后生成的校验码,长度为8个byte。
在使用时,将需要加密的数据按照相应的协议规则拚成data字符串,通过调用gen_digest即可得到固定长度为8个byte的校验码str_digest。


在程序中我是这样编写的:
Private Declare Function Plcz_cs Lib "c:\psw_en.dll" Alias "gen_digest" (ByVal Str_Cz As String, data_len As Integer, ByVal Str_Digest As String) As Long

Private Sub Command1_Click()
Dim RetStr As String, Str_Gen As String, Lng_Str As Long, i As Integer
Str_Gen = ""
RetStr = "123412340000212062310000.00"
i = Len(RetStr)
Lng_Str = Plcz_cs(RetStr, i, Str_Gen)
End Sub
...全文
979 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongzhi19901216 2014-04-15
  • 打赏
  • 举报
回复
引用 3 楼 w_lincq 的回复:
搞定,解决方法如下: 1、要用Private Declare sub 2、直接用RetStr$就可以了 谢谢
引用 3 楼 w_lincq 的回复:
搞定,解决方法如下: 1、要用Private Declare sub 2、直接用RetStr$就可以了 谢谢
楼主,正好我也在做这个项目,遇到跟你一样的问题,求指导!邮箱是804318553@qq.com.
w_lincq 2013-02-07
  • 打赏
  • 举报
回复
搞定,解决方法如下: 1、要用Private Declare sub 2、直接用RetStr$就可以了 谢谢
w_lincq 2013-02-07
  • 打赏
  • 举报
回复
还是不行,一执行到函数时就提示VB已停止工作。
of123 2013-02-07
  • 打赏
  • 举报
回复
Private Declare Function Plcz_cs Lib "c:\psw_en.dll" Alias "gen_digest" (ByRef Str_Cz As Byte, data_len As Long, ByRef Str_Digest As Byte) As Long Private Sub Command1_Click() Dim RetStr As String, Str_Gen As String, Lng_Str As Long, i As Long Dim RetByt() As Byte, Byt_Gen(7) AS Byte RetStr = "123412340000212062310000.00" i = Len(RetStr) RetByt = StrConv(RetStr, vbFromUnicode) Lng_Str = Plcz_cs(RetByt(0), i, Byt_Gen(0)) Str_Gen = StrConv(RetStr, vbUnicode) End Sub

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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