递归火山软件开发平台

标题: 静态变量和乱码的问题 [打印本页]

作者: qzuser123ss    时间: 2024-5-11 05:06
标题: 静态变量和乱码的问题
准备用火山写一个加密的dll给易语言调用,易语言传入原始文本,火山加密后返回给易语言,使用环境为多线程环境。

下面是火山的dll代码,我尝试过使用全局静态变量和局部静态变量,发现在易语言多线程环境下都有概率发生返回上一次数据的问题,比如现在同时启用50个线程,每个线程执行10次循环来调用这个火山dll,大概率会触发上面讲到的问题。如果去掉了静态且改为局部变量后,大概率会出现一些乱码。现在上述两个问题不知道有没有大佬指点下是哪里的问题。
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 内部_转码 <公开 静态 类型 = 变整数 注释 = "一个输出方法模板" @输出名 = "decode" @视窗.输出 = 真>
  3. 参数 参_原始文本 <类型 = 文本型 "">
  4. {
  5.     // 请在其中填入自己的方法内容
  6.     变量 字节集 <类型 = 字节集类>

  7.     字节集 = 文本到多字节 (参_原始文本, 假)
  8.     返回 (字节集.取字节集指针 ())
  9.     // 返回 (文本到多字节 ("hello 火山编程 " + 指针到文本 (参_原始文本), 假).取字节集指针 ())
  10. }
复制代码



作者: 363832663    时间: 2024-5-11 06:50
由易语言传递一个缓冲区,然后火山的dll把数据写入缓冲区


<火山程序 类型 = "通常" 版本 = 1 />

方法 内部_转码 <公开 静态 类型 = 变整数 注释 = "一个输出方法模板" 折叠 @输出名 = "decode" @视窗.输出 = 真>
参数 参_原始文本 <类型 = 文本型 "">
参数 参_缓冲区 <类型 = 整数 注释 = "易语言取空白字节集,传取变量数据地址指针,需要确保申请的字节集足够大不会越界">
参数 参_缓冲区返回长度 <类型 = 整数 注释 = "取变量数据地址(整数变量)">
{
    变量 字节集 <类型 = 字节集类>
    字节集 = 文本到多字节 (参_原始文本, 假)
    内存复制 (参_缓冲区, 字节集.取字节集指针 (), 字节集.取字节集长度 ())
    内存复制 (参_缓冲区返回长度, 字节集.取字节集长度 (), 4)


    // 返回 (字节集.取字节集指针 ())
    // 返回 (文本到多字节 ("hello 火山编程 " + 指针到文本 (参_原始文本), 假).取字节集指针 ())
}




作者: 363832663    时间: 2024-5-11 06:56
363832663 发表于 2024-5-11 06:50
由易语言传递一个缓冲区,然后火山的dll把数据写入缓冲区

内存复制 (参_缓冲区返回长度, 字节集.取字节集长度 (), 4) 改成 写指针处值 (参_缓冲区返回长度, 字节集.取字节集长度 ())






欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4