例如注册一个XMLLIB的库给lua来使用。
#include "stdafx.h"
#include "stdlib.h"extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
int OpenXML(lua_State *L)
{
printf("OpenXml = %s\n",lua_tostring(L,-1));
//返回一个返回值
lua_pushnil(L);
return 1;
}
int SaveXML(lua_State * L)
{
printf("SaveXML = %s\n",lua_tostring(L,-1));
//没有返回值
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
//注意这个结构数组,以NULL,NULL结尾。
luaL_Reg apis[] = {
{"OpenXML",OpenXML},
{NULL,NULL}
};
luaL_register(L,"XMLLIB",apis); //注意这里跟单个函数注册不同,单个函数注册使用lua_register
if(0 != luaL_dofile(L,"helloworld.lua"))
{
printf("%s",lua_tostring(L,-1));
}
system("pause");
return 0;
}
lua的代码:
local x = XMLLIB.OpenXML("c:\\readme.xml")
XMLLIB.SaveXML("c:\\xxx.xml")