码迷,mamicode.com
首页 > 其他好文 > 详细

tolua++ 试用demo

时间:2015-04-15 23:51:51      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:

    一直知道cocos2dx lua是通过tolua++导出lua接口的,但一直没自己去导过,最近比较闲,试了下。

我的环境是:ubuntu ,安装好tolua++后就可以在命令行下试用 tolua++ 工具导出。

MyClass.cpp文件:

#include <iostream>
#include "tolua++.h"

class MyClass
{
public:
    void say()
    {
        std::cout << "Hello World!" << std::endl;
    }
};

tolua++需要写pkg文件,类似于C++的.h文件,当时要过去掉关键字,MyClass.pkg

#include "MyClass.h"
class MyClass
{
    MyClass();
    ~MyClass();
    void say();
};

在终端执行: 

tolua++ -o MyClass.cpp MyClass.pkg   //-o MyClass.cpp 表示写入MyClass.cpp 文件。

执行完后,会生成MyClass.cpp文件,打开会发现有好几百行代码,会有一个

TOLUA_API int luaopen_MyClass (lua_State* tolua_S)

的定义,然后在该文件中加入对MyClass.h文件的引用

#include "string.h"
#include "tolua++.h"
...
#include "MyClass.h"
...
TOLUA_API int luaopen_MyClass (lua_State* tolua_S)  //该方法就是要导出到lua的方法

在MyClass.h文件中增加函数声明:

/* Exported function */
TOLUA_API int  tolua_MyClass_open (lua_State* tolua_S);

mytest.lua测试文件:

local my = MyClass()
my:say()

通过main.cpp 文件来执行lua。

#include <iostream>
#ifdef __cplusplus                                                                                                      
extern "C" {                                                                                   #endif                                                                           
#include "tolua++.h"                                                               
#ifdef __cplusplus
}                                                                 
#endif

extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include "MyClass.h"
TOLUA_API int  tolua_MyClass_open (lua_State* tolua_S);
int main()
{
    lua_State* L = lua_open();
    luaL_openlibs(L);

    tolua_MyClass_open(L); 
    luaL_dofile(L, "mytest.lua"); // 执行lua脚本文件

    lua_close(L);
    return 0;
}

在终端输入:

g++ main.cpp MyClass.cpp -llua -ldl -ltolua++ -o test_lua

-lxx为g++的编译规则,表示需要链接的库文件。

结果就会打印出:hello world


tolua++ 试用demo

标签:

原文地址:http://my.oschina.net/u/156466/blog/402114

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!