|
大概是这样。
1.先在sdlfun.c里面写好C的函数比如说叫JY_Myfunction。
2.然后在jymain.h里面添加该函数的原型。例如:int JY_Myfunction();
3.在jymain.c里面找到jylib [],在里面添加{"Myfunction",HAPI_Myfunction},
第一个字符串是lua调用此函数时用的名字,这里lua调用的时候就是lib.Myfunction()。
HAPI_Myfunction就是用来处理从lua传过来的参数和返回lua数值的函数。
4.在luafun.h里面添加int HAPI_Myfunction(lua_State *pL);
5.luafun.c里面写相关处理函数,这里复制一个Delay来说明- int HAPI_Delay(lua_State *pL)
- {
- int x=(int)lua_tonumber(pL,1);
- JY_Delay(x);
- return 0;
- }
复制代码 楼上所说lua_state是一个栈,lua_tonumber(pL,1);就是提取lua传入的第一个参数,如果有第二个参数那么就是lua_tonumber(pL,2)。这里不一定非要tonumber还可以tostring。有了参数之后(可以没有)就可以调用你刚写好的JY_Myfunction。最后,如果这个函数有返回的话,假设返回值是t,那么用lua_pushnumber(pL,t);。
以上可能有遗漏,并且说明可能不正确,请自行参考源码。 |
|