运行环境:CentOS6.5, gcc 4.4.7
1. # vim main.c
#include <stdio.h>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
int luaopen_tt(lua_State * l);
//要想注册进lua,函数的定义为 typedef int (*lua_CFunction)(lua_State* L)
static int printHello(lua_State * l)
{
lua_pushstring(l,"hello lua");
//返回值代表向栈内压入的元素个数
return 1;
}
//把需要用到的函数都放到注册表中,统一进行注册
static const luaL_Reg lib[]=
{
{"printHello",printHello},
{0,0}
};
//把上边的函数封装到一个模块里边
int luaopen_tt(lua_State * l)
{
luaL_register(l,"tt",lib);
return 1;
}
2. # gcc main.c -fPIC -shared -o tt.so
3. # vim test.lua
print("hello")
require "tt"
print(tt.printHello())