cocos2dx 3.0 研究(5)lua之tolua测试
2014-05-30 12:52
197 查看
1、tolua测试
1.1、pkg文件的编写(1.pkg)
int test();没错,我的例子就这么简单!
1.2、根据pkg文件生成cpp文件(注册接口用)
./tolua -o test.cpp 1.pkg生成的test.cpp的代码如下:
/*
** Lua binding: 1
*/
#include "tolua.h"
#ifndef __cplusplus
#include <stdlib.h>
#endif
#ifdef __cplusplus
extern "C" int tolua_bnd_takeownership (lua_State* L); // from tolua_map.c
#else
int tolua_bnd_takeownership (lua_State* L); /* from tolua_map.c */
#endif
#include <string.h>
/* Exported function */
TOLUA_API int tolua_1_open (lua_State* tolua_S);
LUALIB_API int luaopen_1 (lua_State* tolua_S);
/* function to register type */
static void tolua_reg_types (lua_State* tolua_S)
{
}
/* function: test */
static int tolua_1_test00(lua_State* tolua_S)
{
#ifndef TOLUA_RELEASE
tolua_Error tolua_err;
if (
!tolua_isnoobj(tolua_S,1,&tolua_err)
)
goto tolua_lerror;
else
#endif
{
{
int tolua_ret = (int) test();
tolua_pushnumber(tolua_S,(lua_Number)tolua_ret);
}
}
return 1;
#ifndef TOLUA_RELEASE
tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'test'.",&tolua_err);
return 0;
#endif
}
/* Open lib function */
LUALIB_API int luaopen_1 (lua_State* tolua_S)
{
tolua_open(tolua_S);
tolua_reg_types(tolua_S);
tolua_module(tolua_S,NULL,0);
tolua_beginmodule(tolua_S,NULL);
tolua_function(tolua_S,"test",tolua_1_test00);
tolua_endmodule(tolua_S);
return 1;
}
/* Open tolua function */
TOLUA_API int tolua_1_open (lua_State* tolua_S)
{
lua_pushcfunction(tolua_S, luaopen_1);
lua_pushstring(tolua_S, "1");
lua_call(tolua_S, 1, 0);
return 1;
}
这样我们就成功的将test()这个函数注册给了lua
1.3 、增加main函数进行测试
int test(){
return 6666;
}
int main()
{
int tolua_tarray_open (lua_State*);
lua_State* L = luaL_newstate();
luaL_openlibs(L);
tolua_1_open(L);
luaL_dofile(L,"1.lua");
lua_close(L);
cout <<"hello world" << endl;
return 1;
}
编译命令为
g++ -c -g -ansi -Wall -g -I../../include -I/usr/local/include -o test.o test.cpp
g++ -g -ansi -Wall -g -I../../include -I/usr/local/include -o test test.o -L../../lib -L/usr/local/lib -ltolua -llua
注意:
如果编译的是cpp文件的时候包含lua头文件的时候要加上extern关键字
运行结果
-----------
6666
hello world
----------
相关文章推荐
- cocos2dx 3.0 研究(5) lua之前奏
- cocos2d-x lua tolua++ 面向对象 / cocos2dx3.0 lua C++交互
- cocos2dx中对lua脚本进行覆盖率测试
- cocos2dx 3.0研究(1)-- hello world程序
- cocos2dx-lua中如何使用自定义类以及tolua++的使用
- [COCOS2DX-LUA]0-002.在C++中如何接收Lua方法,然后tolua
- cocos2dx lua binding ,cocos2dx 绑定lua测试
- cocos2dx 3.0研究(1)-- hello world程序
- COCOS2DX-LUA 脚本开发 使用tolua++编译pkg,从而创建自定义类让Lua脚本使用
- 在cocos2dx3.0 lua教程 自己写的类连接lua 使lua能调用自己类的函数
- cocos2dx 3.0 之 lua 创建类
- cocos2dx绑定lua并进行代码测试
- cocos2dx3.0-lua获取cocosstudio场景以及获取ui等控件
- win平台下搭建cocos2dx 3.0+ lua开发环境 VS2012+sublime text+lua 5.2.3
- cocos2dx 3.0 开荒笔记 ---- 3.0的lua绑定
- cocos2dx 3.0 之 lua 创建类 (二)
- cocos2dx 3.0 quick lua schedler
- 【COCOS2DX-LUA 脚本开发之四】使用tolua++编译pkg,从而创建自定义类让Lua脚本使用
- cocos2dx 3.0 研究(4)渲染分析
- cocos2dx lua中使用自定义类以及tolua++的使用