我遵循了这个样板示例:http ://www.matrix44.net/blog/?p=456
我能够将字符串从 C 发送到 Lua,但是当我传递结构时出现错误(我使用了 lua_newuserdata)。
C 剪辑
//s = (ST*) malloc ( sizeof(ST) );
// lua_pushlightuserdata(state, s);
s = lua_newuserdata(state, sizeof(ST));
s->a=11;
s->b=12;
printf ( "s = %p \n", s ); // Prints 0x80a708
result = lua_pcall(state, 0, LUA_MULTRET, 0);
Lua 剪辑
print(foo) --> Prints 0x80a708
io.write("received has:\n", foo.a); --> ERROR : Failed to run script: script.lua:1: attempt to index global 'foo' (a userdata value)
如何将缓冲区转换为结构/表记录?
最终,我的 C 程序不知道结构,它只会将缓冲区传递给 Lua,而 Lua 知道结构并且需要在那里转换。
谢谢, PS:脚本和 C 程序的 printf 都匹配(0x80a708),我可以投吗?