文档章节

tolua++ 试用demo

lxfeng
 lxfeng
发布于 2015/04/15 22:32
字数 342
阅读 381
收藏 2

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

    一直知道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


© 著作权归作者所有

lxfeng
粉丝 27
博文 19
码字总数 16967
作品 0
海淀
程序员
私信 提问
cocos2d-x中使用tolua++导出函数中传递字节流给lua使用的问题

最近一直在忙着改前端的东西,当然也遇到了一些问题,所以记录一下 cocos2d-x中使用tolua++导出函数中传递字节流给lua使用的问题 在cocos2dx 3.0 中提供了新的c/c++函数导出到lua使用的工具,...

pigsoldier
2014/05/17
1K
5
Windows平台下C/C++和Lua的相互调用

Lua for Windows 开始学习Lua编程 Windows平台下的C++调用Lua tolua++ 1.0.93集成C/C++和Lua代码的工具 tolua++ - Reference Manual...

klaus丶
2014/05/19
218
5
关于tolua++的c++与lua问题

问题: 现在要将一个c++的类接口暴漏给lua,实现在lua文件中可以调用该接口。 我的做法是,一个.pkg文件定义要暴漏给lua的类接口,然后用tolua++工具运行命令(如:tolua++ -o LuaScript.cp...

消失了雨痕
2013/03/07
2.6K
3
lua 与C++绑定库比较

lua 与C++绑定 用哪个库比较好,目前我觉得比较优秀的有这三个:tolua++, luabind, luaTinker。 谁能给这三个库做一下比较,可以从易用性,代码简洁,轻量级别、功能性,性能等方面进行分析。...

pengyouya123
2013/05/02
3.2K
2
开源demo代码,亲身感受mobile apm

我们致力于为开发者解决应用性能问题,分析问题的瓶颈,实时追踪用户的真实体验并统计使用状况。 最近android版的SDK开发完成,发布后用户增长速度没有达到预期的要求,让我们很苦恼。 我们内...

terrygl
2014/08/27
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

一篇文章教你轻松使用fastjson

前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y JSON相信大家对他也不陌生了,前后端交互中常常就以JSON来进行数据交换。而有的...

Java3y
36分钟前
4
1
分组功能(tapply,by,aggregate)和* apply系列

每当我想在R中做“ map” py任务时,我通常都会尝试在apply系列中使用一个函数。 但是,我从未完全理解它们之间的区别-{ sapply , lapply等}如何将函数应用于输入/分组输入,输出将是什么样...

javail
36分钟前
4
0
PHP环境搭建之单独安装

还在使用PHP集成环境吗?教你自定义搭建配置PHP开发环境,按照需求进行安装,安装的版本可以自己选择,灵活性更大。 目录: 1. 安装Apache 2. 安装PHP 3. 安装MySQL 4. 安装Composer 观看:h...

不冷的大叔
48分钟前
4
0
为什么JavaScript变量会以美元符号开头?

我经常看到JavaScript带有以美元符号开头的变量。 您何时/为什么选择以这种方式为变量添加前缀? (我不是在问您在jQuery和其他语言中看到的$('p.foo')语法,而是普通变量,例如$name和$orde...

技术盛宴
52分钟前
4
0
TCP 三次握手

https://my.oschina.net/u/4198159/blog/3141874

奋斗的小牛
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部