#include <iostream>
#include <string>
using namespace std;extern "C"
{#include "lua.h"#include "lualib.h"#include "lauxlib.h"
}int myTest(lua_State* L)
{// 获得Lua函数的参数的数量int nArgs = lua_gettop(L);cout << "nArgs = " << nArgs << endl;cout << "==================================================" << endl;for(int i = 1; i <= nArgs; ++i) {const char* str_arg_n = lua_tostring(L,i);cout << "[" << i << "] = " << str_arg_n << endl;}cout << "==================================================" << endl;//cout << "==================================================" << endl;//for(int i = -1; i >= -nArgs; --i) {// const char* str_arg_n = lua_tostring(L,i);// cout << "[" << i << "] = " << str_arg_n << endl;//}//cout << "==================================================" << endl;return 0;
}int main(int argc,char* argv[])
{cout << "===============" << endl;cout << "Hello Lua :)" << endl;cout << "===============" << endl << endl;// char anyKey = 0;lua_State* L = lua_open();if( L == nullptr) {cout << "init Lua Environment Failed!!! " << endl;cout << "Press any key to exit ... ";getchar();return -1;}luaL_openlibs(L);lua_pushcfunction(L,myTest);lua_setglobal(L,"myTest");int ret = luaL_dofile(L, "script/test.lua");if( ret != 0 ) {const char* error = lua_tostring(L,-1);cout << "========== Error occurred =========="<< endl;cout << "execute test.lua , Meet some error" << endl;cout << "Error : " << endl << "\t" << error << endl;cout << "==================================" << endl;cout << "Press any Key to quit ... ";getchar();} else {cout << "execute test.lua Successfully :) " << endl;cout << "Press any Key to quit ... ";getchar();// cin.get(anyKey);}return 0;
}
--
-- script/test.lua
--
myTest(333, "Hello World", 456.7, "Google")--[[
nArgs = 4
==================================================
[1] = 333
[2] = Hello World
[3] = 456.7
[4] = Google
==================================================
--]]