dllcall问题(已解决)
本帖最后由 c123456789qs 于 2023-8-2 18:30 编辑DllCall("card.dll", "str", "Hmac_SM3", "str", "H258", "str", "123456", "str", "2023-7-20", "str", $body, "str", "")
这是调用dll 来输出签名信息, $body 会有可能有10w左右的字符,但是au3 有字符限制,超过65536就会溢出,这要怎么处理?
自己申请内存,传指针 本帖最后由 c123456789qs 于 2023-7-31 15:36 编辑
haijie1223 发表于 2023-7-28 22:28
自己申请内存,传指针
$a = DllStructCreate("char var1")
DllStructSetData($a,"var1",$body )
DllCall($dll, "str", "Hmac_SM3", "str", "1", "str", '123456', "str", "0", "ptr",DllStructGetPtr($a,1), "str", "")
改了下,字符多的也能出签名数据,但是发现只要有中文的,就会有问题,签名信息就没法通过验证。
DllStructGetData($a,"var1") 后 发现只要有中文就会数据不全。 中文放入char怎么会不出错呢,应创建byte类型,参见论坛将中文字符放入结构体中的心得 c123456789qs 发表于 2023-7-31 15:25
$a = DllStructCreate("char var1")
DllStructSetData($a,"var1",$body )
DllCall($dll, " ...
使用byte,然后用binarytostring自己转化,把各种编码都测试一下,看看哪个能用。 ok 了 谢谢楼上2位
页:
[1]