Using Lua API and tag method facilities, tolua maps C/C++ constants, external variables, functions, classes, and methods to Lua.
How tolua works
(1)创建a package file (a C/C++ cleaned header file) listing the constants, variables, functions, classes, and methods we want to export to the Lua environment.
(2)parses this file and creates a C/C++ file that automatically binds the C/C++ code to Lua.
(3) accesed from Lua
How to use toLua
由(1)an executable (2)and a library组成
the executable represents the parser that reads a package file and output a C/C++ code that implements the binding to access the C/C++ features from Lua.
tolua -o myfile.c myfile.pkg
tolua -n pkgname -o myfile.c myfile.pkg
when using C++, we can opt for automatic initialization
tolua -a -n pkgname -o myfile.c myfile.pkg
automatic initialization sometimes does not work
也能够调用tolua_pkgname_close(void);解绑
能够使用-H选项将open与close操作导出到头文件里。
void tolua_restorestate (void);
Basic Concepts
package file may include other package file, use $<include_file>
Basic types
char int float double -> number
char* -> string
void* -> userdata
tolua ignores const modifier
Functions in C/C++ can also manipulate Lua objects explicitly.
lua_Object也是一种基本类型。
User defined types
非Basic Types均为用户自己定义类型,are mapped to tagged userdata type in Lua.
Lua can only store pointers to 自己定义类型。
NULL and nil
Android Studio配置中AndroidAnnotations
Android Studio分包引发的血案(App启动一直黑屏问题)
Android Studio打包APK过大问题的研究
Android WebView JS互调案例
Eclipse版本android 65535解决方案(原理等同android studio现在的分包方式)
Android MVP + 泛型,实现了友好VP交互及Activity潜在的内存泄露的优化
mysql数据监控(db.odbc.select[])
zabbix 默认消息
zabbix 利用脚本发邮件(mail)