LUA脚本调用C函数的方法
2017-11-13 14:39
806 查看
LUA脚本调用C函数是非常方便的,需要在C文件里首先实现好C的函数,然后把C函数和lua的调用名注册到一个库里。
下面的例子是lua脚本调用test.output然后会最终调用到C函数Test_output.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ltestlib_c
#define LUA_TEST_LIB
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
static int Test_output(lua_State *L)
{
unsigned char output[128];
fputs("enter Test_output",stdout);
int n = lua_gettop(L); /* number of arguments */
//extern int sprintf (char *, const char *, ...);
sprintf(output,"input parameter number is <%d>\n",n);
fputs(output, stdout);
return 1;
}
static const luaL_Reg testlib[] = {
{"output", Test_output},
{NULL, NULL}
};
LUALIB_API int luaopen_test (lua_State *L) {
luaL_register(L, "TEST", testlib);
return 1;
}
static const luaL_Reg lualibs[] = {
{"", luaopen_base},
{LUA_LOADLIBNAME, luaopen_package},
{LUA_TABLIBNAME, luaopen_table},
{LUA_IOLIBNAME, luaopen_io},
{LUA_OSLIBNAME, luaopen_os},
{LUA_STRLIBNAME, luaopen_string},
{LUA_MATHLIBNAME, luaopen_math},
{LUA_DBLIBNAME, luaopen_debug},
{"TEST",luaopen_test},
{NULL, NULL}
};
test.output(1,2,3,4,5,6,7,8,9)
LUA脚本调用C函数是非常方便的,需要在C文件里首先实现好C的函数,然后把C函数和lua的调用名注册到一个库里。
下面的例子是lua脚本调用test.output然后会最终调用到C函数Test_output.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ltestlib_c
#define LUA_TEST_LIB
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
static int Test_output(lua_State *L)
{
unsigned char output[128];
fputs("enter Test_output",stdout);
int n = lua_gettop(L); /* number of arguments */
//extern int sprintf (char *, const char *, ...);
sprintf(output,"input parameter number is <%d>\n",n);
fputs(output, stdout);
return 1;
}
static const luaL_Reg testlib[] = {
{"output", Test_output},
{NULL, NULL}
};
LUALIB_API int luaopen_test (lua_State *L) {
luaL_register(L, "TEST", testlib);
return 1;
}
static const luaL_Reg lualibs[] = {
{"", luaopen_base},
{LUA_LOADLIBNAME, luaopen_package},
{LUA_TABLIBNAME, luaopen_table},
{LUA_IOLIBNAME, luaopen_io},
{LUA_OSLIBNAME, luaopen_os},
{LUA_STRLIBNAME, luaopen_string},
{LUA_MATHLIBNAME, luaopen_math},
{LUA_DBLIBNAME, luaopen_debug},
{"TEST",luaopen_test},
{NULL, NULL}
};
test.output(1,2,3,4,5,6,7,8,9)
相关文章推荐
- C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
- C++中使用Lua脚本 和lua中调用c的方法
- Lua脚本:C调用Lua实现方法
- C++中使用Lua脚本 和lua中调用c的方法
- C++中使用Lua脚本 和lua中调用c的方法
- C++中使用Lua脚本 和lua中调用c的方法
- [Unity] .lua脚本调用C#方法的一小点坑
- Lua脚本:Lua调用C实现方法
- C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
- C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
- Lua脚本调用C函数小结
- Lua脚本调用C函数小结
- 从lua调用C函数
- C++与C函数的相互调用方法以及error C2732:链接规范与"f"的早期规范冲突的解决办法
- golang调用lua脚本之安装golua
- Step By Step(Lua调用C函数)
- lua调用c函数
- 多种调用JS脚本的方法
- .Net 中利用ADODB生成的RecordSet在前台脚本中进行调用的方法
- lua调用的c函数模块命名规则