lua進階5--C++調用lua函數

下面主要記錄一下,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;

}
運行結果如下


發佈了60 篇原創文章 · 獲贊 32 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章