我的 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/