以前都是看的lua腳本怎麼寫的,還有就是在以前的工做室仿照着寫。沒有真正懂LUA和C語言如何之間交互的。今天寫了一個例子安全
首先我要實現的功能計算兩個整數的和,就是x+y了。由於x和y是隨時變化的,我又不想在C程序裏修改,那麼就把這兩個參數放到lua腳原本傳遞。函數
那麼我是如何實現的呢?lua
第一步:搭建window環境,使用vs2005 這個東西在網上搜索一下吧,不少。spa
第二步:寫一下c函數的邏輯。code
//testlua.c #include "stdafx.h" #include <stdio.h> extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" } lua_State* L; int add(lua_State* L); int add(lua_State* L) { //從L棧中取出索引爲1的數值,並檢查 int x = luaL_checkint(L,1); //從L棧中取出索引爲2的數值,並檢查 int y = luaL_checkint(L,2); printf("result:%dn",x+y); return 1; } int _tmain(int argc, _TCHAR* argv[]) { //初始化全局L L = luaL_newstate(); //打開庫 luaL_openlibs(L); //把函數壓入棧中 lua_pushcfunction(L, add); //設置全局ADD lua_setglobal(L, "ADD"); //加載咱們的lua腳本文件 if (luaL_loadfile(L,"E:workvsProjecttestLuamylua.lua")) { printf("errorn"); } //安全檢查 lua_pcall(L,0,0,0); //push進lua函數 lua_getglobal(L, "mylua"); lua_pcall(L,0,0,0); printf("hello my luan"); return 0; }
x下面是個人lua腳本代碼,很簡單blog
function mylua() print("mylua") ADD(1,2) ADD(3,4) end
ADD(1,2) 關聯到註冊到的add函數,把參數壓入了。索引
最後輸出結果爲:rem
看是否是很簡單啊get