C++端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include "stdafx.h" lua_State *L; void load_lua(lua_State **L, char *filename){ *L=luaL_newstate(); luaL_openlibs(*L); if (luaL_loadfile(*L,filename) || lua_pcall(*L,0,0,0)){ luaL_error(*L, "load file error! %s" ,lua_tostring(*L,-1)); } } int _tmain( int argc, _TCHAR* argv[]) { load_lua(&L, "raw.lua" ); //此处若直接传入L会出错 lua_getglobal(L, "gettable" ); if (lua_pcall(L,0,1,0) !=0){ luaL_error(L, "pcall wrong %s" ,lua_tostring(L,-1)); } luaL_checktype(L,1,LUA_TTABLE); int n=lua_objlen(L,1); printf ( "n = %d\n" ,n); lua_pushstring(L, "ee" ); lua_rawseti(L,1,5); //t[n]=v,n为第三个参数,v是栈顶元素 n=lua_objlen(L,1); printf ( "n = %d\n" ,n); int i; for (i=1;i<=n;i++){ lua_rawgeti(L,1,i); printf ( "%s\n" ,lua_tostring(L,-1)); } return 0; } |
lua脚本:
1
2
3
4
|
function gettable() tb={ "aa" , "bb" , "cc" , "dd" } return tb end |
运行输出的结果为:
1
2
3
4
5
6
7
|
n = 4 n = 5 aa bb cc dd ee |