1. 程式人生 > >lua 與c++互動 之呼叫函式

lua 與c++互動 之呼叫函式

</pre><pre name="code" class="cpp">

對c/c++ 與lua的互動呼叫函式做一個小總結

#include <iostream>

extern "C" {  
#include "lua.h"   
#include <lauxlib.h>     
#include <lualib.h>     
} 

/*  
	-- lua 檔案內的內容
	a = 10

	function show(param)

	return a + param

	end

*/


int main()
{
	// 建立一個state 區域
	lua_State* L = luaL_newstate();

	// opens the basic library 這些是在引入一些庫 
	luaL_openlibs(L);

	// 讀取lua檔案  讀取成功返回0, 失敗返回非零整數
	if(luaL_dofile(L,"lua_prac.lua") != 0)
	{
		printf("檔案lua_prac.lua讀取失敗");
		return 0;
	}
	// 將lua中的函式名壓入棧中
	lua_getglobal(L,"show");

	// 將引數傳入函式show中
	lua_pushnumber(L,3);

	// 呼叫函式
	lua_pcall(L,1,1,0);

	// 將函式的返回結果取出來 即nResult
	int nResult = lua_tointeger(L,-1);
	
	printf("%d",nResult);

	getchar();
	return 0;
}


以上例子能正常執行的條件是有lua-5.1.5中的lua.h檔案 和lua51.lib檔案找得到,  一般都是加一下附加目錄