递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 458|回复: 3
打印 上一主题 下一主题

[视窗] dll返回字节集的问题

[复制链接]

8

主题

49

帖子

209

积分

中级会员

Rank: 3Rank: 3

积分
209
跳转到指定楼层
楼主
发表于 2024-10-9 06:46:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
dll需要返回文本,目前我是直接返回字节集的指针,但是在程序中读指针需要字节集的长度,我想用类似于易语言的参考来实现,但是实际过程中没有生效。用写指针处值又乱码,各位是怎么实现的?


这是dll的方法



这是exe的方法

回复

使用道具 举报

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40517
沙发
发表于 2024-10-9 08:00:55 | 只看该作者
把字节集长度传递过去不就行了。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

29

主题

305

帖子

2592

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2592
板凳
发表于 2024-10-9 08:20:49 | 只看该作者
本帖最后由 cxz7411 于 2024-10-9 08:22 编辑

返回(字节集变量.取对象自身地址()),然后调用方直接: 字节集类 即可.如果不能直接使用字节集类,则可以用 读指针处对象(返回值,字节集类)  即可
回复

使用道具 举报

26

主题

1899

帖子

6920

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6920
地板
发表于 2024-10-9 09:39:10 | 只看该作者
你的图没发上来
一、文本数据不需要长度,只要确保有结束零字符,就能通过指针判断长度,火山里用「指针到文本、多字节指针到文本」就可以(官方缺了一个UTF8指针到文本,第三方模块有);
二、如果你返回的是局部变量的指针,那返回的是野指针,变量中的数据已经被释放,肯定是乱码的;
三、如果将局部变量设置为静态,或者返回成员变量的指针,虽然不是野指针,但你这个函数和返回的指针不是线程安全;
四、如果申请内存后再返回指针,不是野指针也线程安全,但你必须考虑多增加一个函数来释放这个指针,否则会内存泄漏;
五、DLL建议仿照Windows API的方式来设置,即调用方申请内存,把指针传给DLL,DLL把数据写入到这个内存里。但申请的内存长度是多少,这就要你自己考虑了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-23 00:25 , Processed in 0.086966 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表