#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
==================================================
--]]
标签:调用,函数,lua,--,nArgs,Lua,include,cout
From: https://www.cnblogs.com/edisonewton/p/18298373