tolua++使用过程的坑

1、C++初始化tolua++环境

       tolua++根据pkg文件生成C++的对应文件,在文件的最后有一个TOLUA_API int luaopen_lua_bind_cpp (lua_State* tolua_S)函数,把这个函数写在lua环境初始化的位置,这样就把tolua++注册的常量、函数、变量注册到lua环境,这样在lua脚本里就可以直接使用了


2、常量、函数或变量的注册

     

     使用//tolua_begin和//tolua_end把想要注册的常量、函数和变量包含起来,并在pkg文件里包含对应的头文件,这样就注册成全局的




     如果想要把常量、函数或变量注册到一个模块里,就要在pkg文件里应用class


3、注册函数

                                                                       图5

tolua++使用过程的坑_第1张图片

                                                                        图6

图5使用#define定义USER_RET,tolua++语法解析的时候把USER_RET解析成自定义的结构,这样tolua++就理解为你要返回一个元表

                                                                           图7

tolua++使用过程的坑_第2张图片

                                                                             图8

图7当中直接返回一个int,tolua++就理解为你要返回一个int值,这样你的函数返回的结果就是你想要返回的结果,tolua++就直接push了。所以想要返回元表的#define一下,想要返回值的就直接写int或其他类型名。

以上只是我的猜测,如果有什么不对的请指正。

                                                                              图9

tolua++使用过程的坑_第3张图片

                                                                                图10

                                                                             图11

tolua++使用过程的坑_第4张图片

                                                                        图12

Lua_State是lua_State的#define,图9和图11两种不同的定义方式,分别有图10和图12两种不同的结果

你可能感兴趣的:(lua)