将C#字节数组传递给LuaInterface
我的C#代码中有一个字节数组,需要将其传递到LuaInterface实例中。我可以在Lua中使用pack(),将生成的字符串传递给C#,并使用将C#字节数组传递给LuaInterface,c#,lua,luainterface,C#,Lua,Luainterface,我的C#代码中有一个字节数组,需要将其传递到LuaInterface实例中。我可以在Lua中使用pack(),将生成的字符串传递给C#,并使用System.Text.Encoding.UTF8.GetBytes()对其进行转换,但使用另一种方法似乎不起作用 有简单的解决办法吗?我希望可以避免将字节数组赋给全局值 编辑: 今天早上我尝试了一些新东西。我试着使用LuaInterface.GetFunction(),一切都正常,直到它在LuaDLL.cpp中点击lua\u pushstring()。此
System.Text.Encoding.UTF8.GetBytes()
对其进行转换,但使用另一种方法似乎不起作用
有简单的解决办法吗?我希望可以避免将字节数组赋给全局值
编辑:今天早上我尝试了一些新东西。我试着使用
LuaInterface.GetFunction()
,一切都正常,直到它在LuaDLL.cpp中点击lua\u pushstring()
。此时,C#字符串通过封送处理::StringToHGlobalAnsi().ToPointer()转换为char*。看起来这个函数需要一个以null结尾的字符串,我的字符串的第一个字节是0,所以我在lua代码中得到一个空字符串。尝试用编码字节数组以获得一个可以传递给lua的字符串。最后将其追溯到一个字符串,调用lapi.c中的::lua\u pushstring()
。它对传入的char*调用了strlen()。因为我的第一个数据字节是0,所以它返回0。还有另一个调用,lua_pushlstring
,它接受字符串的大小作为参数。更改为调用此函数修复了此问题。我最初尝试了此方法,但UTF8编码除外。问题是在此时将数据传递到Lua。我必须通过lua.DoString(“parse(data)”)调用lua函数;字符串格式不喜欢空字符。