gpt4 book ai didi

c# - 将 C# 字节数组传递给 LuaInterface

转载 作者:行者123 更新时间:2023-11-30 22:43:52 25 4
gpt4 key购买 nike

我的 C# 代码中有一个字节数组,我需要将其传递给 LuaInterface 实例。我可以在 Lua 中使用 pack(),将生成的字符串传递给 C# 并使用 System.Text.Encoding.UTF8.GetBytes() 进行转换,但换一种方式似乎不起作用。

有没有简单的解决办法?我希望我可以避免将字节数组分配给全局值。

编辑:
今天早上我尝试了一些新事物。我尝试使用 LuaInterface.GetFunction(),一切正常,直到它命中 LuaDLL.cpp 中的 lua_pushstring()。此时,C# 字符串通过 Marshal::StringToHGlobalAnsi().ToPointer() 转换为 char*。看起来这个函数需要一个以 null 结尾的字符串,而我的字符串的第一个字节是 0,所以我在我的 lua 代码中得到一个空字符串。

最佳答案

最后追溯到 lapi.c 中对 ::lua_pushstring() 的调用。它在传入的 char* 上调用了 strlen()。因为我的第一个数据字节是 0,所以它返回了 0。还有一个替代调用,lua_pushlstring,它接受作为参数的字符串的大小。更改为调用此函数解决了这个问题。

关于c# - 将 C# 字节数组传递给 LuaInterface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3722060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com