tolua++简介

游戏服务器之第三方库tolua++的使用 tolua++ 是使用luac++交互的第三方库。可以跨windows和linux平台的。 使用步骤: 1、把tolua++.exe(在tolua++-1.0.93.rar中) 添加到环境变量path中(或者把tolua++.exe、lua5.1.dll放到当前目录) 2、复制头文件到文件夹pack(若新加头文件,否则就直接修改对应pkg文件) 3、把头文件拓展名改为pkg 4 阅读详情
 

2005年12月27日23:07:59

一.tolua++简介
      tolua++是一种第三方的软件包,可以为Lua提供面向对象的特性,这样我们就可以使用Lua来编写使用C++语言库的脚本文件.


二.tolua++的编译.
     tolua++的主页在
http://www.codenix.com/~tolua/,目前的最新版本是1.0.7,为了使用tolua++,我们需要三个文件:
        1.bin/tolua++[.exe] - tolua++的可执行程序
        2.include/tolua++.h - tolua++的头文件
        3.lib/libtolua++.a or lib/tolua++.lib - tolua++的静态库(当然有的时候也需要生成动态库,可以参考我下面给出的文章的网址,我们先从最简单的入手)
       使用tolua++的时候,都需要使用tolua++的可执行程序自动生成一个.pkg文件生成对应的.c(C语言)或者.cpp文件(C++语言),然后把这个文件和对应的C/C++文件一起编译生成可执行程序,这样就可以对对应的Lua脚本进行读取操作.在后面将结合代码例子对这个过程进行详细的讲解.

        tolua++的编译比较麻烦,官方的编译说明需要scons这个软件,下面介绍另一种办法,只需要Lua就可以了(本身编写Lua脚本文件不可能不用到Lua解释器,所以这个算不上什么负担了:)
       说明一下,这个办法不是我想出来的,出处在这里:
       
http://lua-users.org/wiki/CompilingToluappWithoutScons
       官方下载的tolua++文件夹里面已经有了上面提到的1和2文件了,我在这里偷懒,就只说3的生成.
       其实在上面的文档里面写得很清楚了,如下编译生成静态库文件:     

tolua++_1.0.5-1/src/lib> gcc -*.c  -I../../include -<path_to_lua> /include
tolua
++_1.0.5-1/src/lib> ar rcsv libtolua++.a *.o

      
        <path_to_lua>的意思是这里输入的是lua源代码包的路径,gcc中的-I参数用于指定include文件的位置.
       生成了这三个文件之后,如果需要使用它们的话,需要把它们拷贝到相应的路径.windows下面一般的会使用cygwin这个工具,以它为例说明:
1.可执行文件放在cygwin根目录的bin目录下
2.头文件放在cygwin根目录下的usr/include下面
3.静态头文件放在cygwin根目录下的lib目录下面
说明:如果没有Lua语言的对应的可执行文件,头文件,lib文件一样不能使用tolua++,对于配置lua脚本解释器的过程和上面类似.
OK,这样一个tolua++的编译环境就配制好了,如果你在原先安装cygwin的时候没有指定cygwin的可执行文件的目录,那么对于windows下面的用户可以在"我的电脑"-"属性"-"高级"-"环境变量"-"Path"里面修改,
比如我在里面加入我的cygwin的bin目录:C:/cygwin/bin,大功告成~~windows下面的用户只用gcc的话不一定非得使用cygwin,毕竟太大了,有人喜欢使用mingw,配置的方法类似~~


三.代码例子
        tolua++的源码包下载下来之后在根目录的src/tests中有很多代码例子,我们随便找其中的tarray一组作为讲解的对象.

        这一组中包含的有对应的pkg文件,c文件,h文件和最后用于测试的lua脚本文件.pkg文件是用于声明我们允许后来使用的Lua脚本使用的变量,常量,类,函数等等的一个声明列表,这个列表中的所有东西都必须在对应的C++文件中给出来,不然是无法使用的.pkg文件的语法和C/C++的语法比较类似,可以到tolua++的官方网站上去看看,这里不再详述.
        使用pkg文件我们可以生成一个对应的C或者C++文件,可以这样做:

tolua++ -o test.c tarray.pkg


        生成的test.c就是对应的c文件,你打开这个文件看看,基本上都需要上千行的代码.

        打开tarray.c看看,为了使用Lua我们还需要作些什么,除去基本的数据的定义和main之外,还需要这些:
1.包含lua头文件:

#include "lualib.h"
#include 
"lauxlib.h"


2.调用Lua脚本:
省略去不重要的部分,有这些代码:

 int  tolua_tarray_open (lua_State* );
 lua_State
* L =
 lua_open();
 
//.

 luaopen_base(L);
 tolua_tarray_open(L);
 lua_dofile(L,
"tarray.lua");//执行lua脚本

 lua_close(L);

 

        OK,现在来看看如何使用:
       首先,生成tarray.o文件:

gcc tarray.c - c


       其次,生成test.o文件:

gcc test.c tarray.h -c

       最后,把两个文件链接起来,注意要加入Lua和tolua++的lib文件:

gcc -o tarray.exe tarray.o test.o -llua -llualib -ltolua++

       好了,现在大功告成,我们编写一段Lua代码调用C中的变量(源码中带有的tarray.lua基本上没有任何用途:)

for i=1,10 do
   print(a[i 
- 1 ])
end

for i=2,10 do

   print(p[i 
- 1 ].x)
end

      OK,现在在命令行下面输入tarray.exe看看效果:

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9

      可以看到简单的两个循环遍历C中的变量的效果就这样由lua脚本实现了,很简单,不是么:)

       总结一下使用tolua++的过程:
        1)编写pkg文件生成对应的c/c++文件
        2)分别编译1)产生的文件(注意要加上对应的头文件)和需要使用lua脚本的文件
        3)编写lua脚本,遵从lua的语法并且使用到的变量,函数,类等都是1)中声明过的.

lua学习03:tolua的编译和使用:C/C++调用lualua调用C++lua调用tolua、常用tolualua的API介绍 文章目录一、编译及使用流程1)编译lua静态库2)编译tolua++静态库3)编译tolua++.exe4)根据C/C++文件编写好对应的pkg文件,然后根据一创命令生成tolua(1)C文件举例(2)C++文件举例二、C++调用lua三、lua调用C++ 一、编译及使用流程 1)编译lua静态库 必须先下载lua 1.5,下载好后,把/src目录的除开lua.c,luac.c的文件全部放到一个新建的静态链接库的工程项目里,然后编译出一个静态链接库lua.lib。 2)编译tolua++静态库 去tolua 阅读详情

相关推荐

tolua++ 编译 及使用 简单介绍

tolua++ 编译 及使用 简单介绍 tolua++ 是用来把 C++代码 生成 在Lua中使用的接口的工具,编译步骤比较繁琐。

【Cocos2d-x】绑定C++自定义类到Lua

使用tolua++工具在Lua中使用C++自定义类

3353

【亲测免费】 tolua++ 项目使用教程

tolua++ 项目使用教程 1. 项目介绍 tolua++ 是一个扩展了 toLua 的工具,旨在将 C/C++ 代码与 Lua 语言进行集成。tolua++toLua 的基础上增加了面向 C++ 的新特性,如类模板等。tolua 是一个强大的工具,能够极大地简化 C/C++ 代码与 Lua 的集成过程。通过解析“清理”后的头文件,tolua 自动生成绑定代码,使得 Lua 能够访问 C/...

gitblog_00524的博客 837

tolua++实现分析

项目正在使用cocos2dx的lua绑定,绑定的方式是tolua++。对大规模使用lua代码信心不是很足,花了一些时间阅读tolua++的代码,希望对绑定实现的了解,有助于项目对lua代码的把控。从阅读结果上来看,起码在内存管理上,帮助还是很大的。 1.tolua++如何将c++对象导入到luatolua++为每一个传入lua的对象建立一个userdata,userdata的值,是

wtyqm的专栏 2万+

tolua++ 编译 及使用 简单介绍 标签: tolua++luaC++

tolua++ 编译 及使用 简单介绍 标签: tolua++luaC++ 2015-11-03 00:52 1576人阅读 评论(0) 收藏 举报  分类: Lua(6)  版权声明:本文转自http://blog.csdn.net/huutu 转载请带上 http://www.thisisgame.com.cn tolua++ 是用来

boshuzhang的专栏 1709

tolua++使用

tolua++ 配置 看到很多方法将luac++结合的办法,由于看到cegui使用的是tolua++,所以决定使用tolua++。 1、下载tolua++ www.codenix.com/~tolua/ 2、找到 tolua++-1.0.93\win32\vc7文件夹,编译程序生产tolua++.exe (我用的include和lib都是cegui里的,统一版本比较好...

aobu0171的博客 270

tolua++初探(一)

luaplus试验了下,想把简单的C++类映射到lua脚本中不难,但是复杂一点的,比方说类的聚合、继承等,比较麻烦。我试验了两天,用表中表来实现是可以的,但自己弄太麻烦了。说到底,我只是想用一下而已,不是想从头弄一个系统。    用CEGUI时发现它用了tolua++,从网上DOWN了源码(1.0.92),支持Lua5.1。我用VS2005,用源码包里的sln顺利编译出tolua++

安晓辉生涯——聚焦程序员的职业规划与成长 8644

tolua++ 源码分析

tolua++ 源码分析 图中的黑色表示lua table,灰色表示userdata,浅灰=》light userdata,绿色=》内存 tips: 1, lua里的userdata是一块内存(lua_newuserdata时指定体积),有metatable,但是doesn't have any key。所以,每次访问一个usrdata,都一定是到它的metatable里找的。...

GJQI12的专栏 751

tolua++分析

int lua_isusertable (lua_State* L, int lo, const char* type)

john_crash的专栏 2919

toLua++toLua++编译生成tolua++.exe史上完整版

准备材料: 1、Lua源码,我用的是Lua5.1 2、toLua++源码 白嫖党这里集合:链接:https://pan.baidu.com/s/1iCUWNCZve48JP5CCVDeIXg 提取码:eao0 这里面有我编译好的Lua的源码以及lib库,以及生成的toLua++.exe,版本是:tolua++-1.0.92,命令行输入:toLua++ -v即可查看。 如果你只想用toLua++.exe,现在可以撤退了。 lua-5.1.5里面结构如图: toLua++里面结构如图: 下面是整个.

Gary的面包屑小道 1322

tolua++的使用

如约,今天加班加点搞定了tolua的使用,算是对上一篇的承接,也是跟自己的约定的开始。 下面是正题! 首先说明几点: 1、cocos2dx包含了tolua的源码,所以我们不需要自己编译源码了。 2、我试了一下自己编译源码得到tolua++.lib,然后加入工程中运行发生了指针错误,现阶段凭借我的水平还不能明白哪的错。。。。 3、其实。。。费这么大劲都是因为自己的不熟练与低级错误 然后

u013790419的专栏 2285

[tolua++] 永远不要用tolua.type

先说一下项目,用CEGUI做界面,然后由tolua++导出各种函数给lua使用。 //基类 namespace CEGUI { class Window{ ... void setText(const String&text, COLOR c=COLOR_BLACK); }; // end of Window //StaticText类 class StaticText:publi

低俗公子 2098

tolua++初探(四)

     聚合是最常见的构造新类的方式了,另一个是继承。tolua++支持单继承,后面会提到继承的例子。这里先看看怎么将利用了聚合的类导出到lua中。     我的目的是想在Lua中使用C++类的实例,而不是在lua中生成C++类实例,所以我在利用tolua++lua导出类时一般不导出构造函数,这样就无法在lua中生成类实例。    但是为了演示的方便,这个例子中用到的两个简单类

安晓辉生涯——聚焦程序员的职业规划与成长 6453

tolua++ for mac 安装

下载lua包 和 tolua++ 目录改成自己对应的目录 lua for mac make macosx  make macosx install tolua++ for mac cd /Users/graoke/tolua++-1.0.93/src/lib gcc -c *.c -I../../include -I/usr/local/include/ -L/usr/local

u013278818的专栏 1701

tolua++参考手册(翻译)

原文地址: http://www.codenix.com/~tolua/tolua++.html      译者注:在网上貌似没有对应的tolua中文版文档,故心血来潮,翻译了第一部分:tolua使用。第一次翻译,出了很多错误。可能还潜在很多的错误,建议和原版一起阅读。如果有错误,希望各位看官指出,谢谢。 Tolua++tolua的升级版,是把C/C++lua代码结合使用的

Mihawk专栏 8477
上一篇: LuaTinker
下一篇: 给C++初学者的50个忠告
killwd
博客等级 码龄26年 24粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值