DLL PChar 参数如何转换成 String

iamduo iamduo 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在写DLL的时候,我们都知道,参数不能用 String,而用PChar替代。
我这里有一点不明白,
如果这个字符串不是立即就会处理,需要攒起来的,那么该如何转换呢?
(也许 New 一个 PChar,Move 一下内容也是一种不错的方法。这里不考虑这种方案。)

由于,很多情况下,我的设计都类似。
1. DLL 中创建一个全局的对象 A,处理这些字符串。
2. 不导出类,而仅仅是一个方法,参数用 PChar。该方法的实现中,用 A 的方法来执行。
3. PChar 用 StrPas 转换成 String 给 A 的方法。(!!!这里我总是在怀疑)
最近我总碰到莫名的地址报错。我更加怀疑这个地方了。

有没有同行研究过这种情况?
大家都是怎么处理的呢?

假设:有个主程序 B.exe。 写日志的类写在 C.dll 中,并且导出一个函数 Log(AStr:PChar)。有个子模块 D.dll 处理一些简单业务。
C.dll 在 exe 创建的时候就被动态加载。当 B 调用 D 之前,写一下日志,D在处理的时候,写一下日志,B调用完成后写一下日志。
“写日志”由于不是立即执行的,我们可以简单解释成 GetMem 分配内存。
那么,在 Log 这个函数里,每一次 GetMem 是不是都能由 C.dll 在被释放的时候,自己负责释放呢?
...全文

相关推荐

评论 13
收藏 已收藏
分享
返回顶部
iamduo
Windows SDK/API 1,184 成员 22,326 内容