2

LuaInterfaceインスタンスに渡す必要のあるバイト配列がC#コードにあります。Luaでpack()を使用し、結果の文字列をC#に渡して、で変換することはできますSystem.Text.Encoding.UTF8.GetBytes()が、逆の方法ではうまくいかないようです。

簡単な解決策はありますか?バイト配列をグローバル値に割り当てないようにしたいと思っています。

編集
私は今朝いくつかの新しいことを試みました。を使用してみましたが、LuaDLL.cppLuaInterface.GetFunction()でヒットするまですべてが機能します。lua_pushstring()この時点で、C#文字列は。を介してchar*に変換されMarshal::StringToHGlobalAnsi().ToPointer()ます。この関数はnullで終了する文字列を想定しているようで、文字列の最初のバイトは0なので、luaコードで空の文字列を取得します。

4

2 に答える 2

3

最後に、それを::lua_pushstring()lapi.cの呼び出しまでたどりました。渡された char* を呼び出しstrlen()ました。データの最初のバイトが 0 だったので、0 が返さlua_pushlstringれました。文字列のサイズを引数として受け入れる別の呼び出し があります。この関数を呼び出すように変更すると、問題が修正されました。

于 2010-09-16T15:02:30.103 に答える
0

バイト配列をSystem.Text.ASCIIEncoding.ASCII.GetStringでエンコードして、Lua に渡すことができる文字列を取得してみてください。

于 2010-09-15T22:02:34.963 に答える