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文件里包含对应的头文件,这样就注册成全局的

tolua++使用过程的坑

tolua++使用过程的坑


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

tolua++使用过程的坑

tolua++使用过程的坑


3、注册函数

tolua++使用过程的坑

                                                                       图5

tolua++使用过程的坑

                                                                        图6

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

tolua++使用过程的坑

                                                                           图7

tolua++使用过程的坑

                                                                             图8

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

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

tolua++使用过程的坑

                                                                              图9

tolua++使用过程的坑

                                                                                图10

tolua++使用过程的坑

                                                                             图11

tolua++使用过程的坑

                                                                        图12

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

相关文章:

  • 2021-07-19
  • 2022-12-23
  • 2021-07-12
  • 2021-06-04
  • 2021-08-19
  • 2021-09-03
  • 2021-09-25
  • 2021-07-02
猜你喜欢
  • 2022-12-23
  • 2021-06-20
  • 2021-08-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-04
相关资源
相似解决方案