下面主要記錄一下,C++中如何調用lua函數。我覺得這個功能是十分有用的,遊戲開發中經常要把一些邏輯處理的函數放到lua文件中,再通過C++來進行調用。
下面只是一個簡單的示例,但也可以起到入門的作用。
lua文件中(test.lua)中代碼
function luaf_Add(x,y)
print("luaf_Add:x="..x..",y="..y..",x+y="..x+y)
return x+y
end
C++中的代碼
#include <stdio.h>
extern "C"{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
int main ( int argc, char *argv[] ){
const int x=123,y=234;
lua_State* L;
/*初始化Lua
*/
L=lua_open();
luaopen_base(L);
luaopen_table(L);
luaopen_string(L);
luaopen_math(L);
luaL_dofile(L,"test.lua"); //加載lua腳本
lua_getglobal(L,"luaf_Add");//壓入函數名
lua_pushnumber(L,x);//壓入參數x
lua_pushnumber(L,y);//壓入參數y
lua_pcall(L,2,1,0);//調用函數luaf_Add,2個參數,1個返回值,如果出錯不調用錯誤處理函數
int ret=(int)lua_tonumber(L,-1);//處理返回值
printf("main:x=%d,y=%d,x+y=%d ret=%d\n",x,y,x+y,ret);
lua_pop(L,1);
/*清除Lua
*/
lua_close(L);
return 0;
}
運行結果如下