|
发表于 2009-8-8 12:32:27
|
显示全部楼层
1)
static int l_test(lua_State *L) {
double d = luaL_checknumber(L, 1); // 传参
lua_pushnumber(L, d * 0.1); // 返回值
return 1;
};
功能函数,在lua中调用以完成具体运算
2)
static const struct luaL_Reg testlib [] = {
{"test", l_test},
{NULL, NULL} // 表明结尾
};
注册函数入口,把c下的l_test函数以test为名放入testlib列表
3)
__declspec(dllexport)
int luaopen_test(lua_State *L)
{
luaL_register(L, "testlib", testlib);
return 1;
};
注册模块对象
在lua中以(绿)"testlib"引用(红)testlib对象
并通过2)中的关联声明,使lua可以 testlib.test方式调用 l_test函数
调用dll需要dllexport声明(黄)
在 lua中先主动调用(被dllexport声明的) luaopen_test()
然后才能以 testlib.test方式调用c下的 l_test
注
dllexport
(lua_State *L)方式穿参
声明函数调用方式,即上面的testlib.test,先把l_test放入列表,再把列表注册给lua |
|