在c++程式中,不僅能夠獲得lua全域性變數的值,還可以重新賦予lua全域性變數新的值,同時也可以建立新的全域性變數,這些全域性變數在c++程式和lua指令碼程式中都是可以動態修改的。
下面是乙個簡單的示例:
test.cpp
#include
#include
#include
extern "c" ;
int main(void)
lual_openlibs(l);
int inum = 100;
lua_pushnumber(l,inum);
lua_setglobal(l,"g_num");
lua_getglobal(l,"testfun");
lua_pcall(l,0,0,0);
lua_close(l);
return 0;
}test.lua
g_num = 0;
function testfun()
print(g_num);
endzhu@debian:~/text$ gcc -o text test.cpp -lpthread -i /home/zhu/server-youlan/3rd/lua/ -l /home/zhu/server-youlan/3rd/lua/ /home/zhu/server-youlan/3rd/lua/liblua.a -llua -lm -ldl -g
zhu@debian:~/text$ ./text
100.0
test.cpp
extern "c"
#pragma comment(lib,"../../lib/debug/lualib.lib")
int main(void)
lual_openlibs(l);
int inum = 100;
char szstr = "world";
lua_pushnumber(l,inum);
lua_setglobal(l,"g_num");
lua_pushstring(l,szstr);
lua_setglobal(l,"g_str");
lua_pushnumber(l,inum);
lua_setglobal(l,"cpp_num");
lua_pushstring(l,szstr);
lua_setglobal(l,"cpp_str");
lua_getglobal(l,"testfun");
lua_pcall(l,0,0,0);
lua_close(l);
return 0;}
test.lua
g_num = 0;
g_str = "hello";
function testfun()
print(g_num);
print(g_str);
print(cpp_num);
print(cpp_str);
end
lua呼叫c程式
鑑於lua5.4版本取消了lual register之後,網上教程的混亂,這裡以5.4版本為例,用lual setfuncs來代替。如下 ifdef cplusplus extern c else include include include include endif include inclu...
lua學習 lua與C C 程式的整合
lua與c c 互動,主要靠lua api和向lua註冊好的函式。如下圖 注 luaglue就是讓lua指令碼中可呼叫的c 函式的介面。即那些註冊的函式。這裡起關鍵作用的要數lua state的結構,這就得講一下lua環境和lua stack。lua環境 lua環境由所有可操作的資料構成,如編譯好的...
Lua基礎學習 Lua函式
函式主要用途 1 是作為呼叫語句使用。2 作為賦值語句的表示式使用。語法 區域性 全域性 function fun name 引數列表 函式體endfunction 定義函式關鍵字注意 1 在使用 lua 函式 變數時一定要先定義函式 變數 2 lua 函式不支援引數預設值,可以使用 or 解決。如...