tolua++入门

tolua++使用SCons进行编译,我们也可以使用自己喜欢的IDE新建一个控制台(Console)工程,然后将源码下bin目录中所有文件加入到工程中,直接编译即可;同样地,新建一个静态库(Static Library)工程,将源码下lib目录中所有文件加入进入,编译即可。当然了,这些工程是需要lua库支持的,目前tolua++最新版本是1.0.93,支持lua 5.1.x。
经过上面的步骤,在Windows系统上的话,你会得到tolua++.exe和tolua.lib,前者是一个辅助工具,用来将.pkg文件(下面将会讲到)转换成源代码,而后者则是我们需要在自己工程中加入的函数库。
下面开始正式使用tolua++。

一开始,我们并不需要特别注意,按照自己的需要来撰写完完全全的C++代码,假设我们有一个基于控制台的项目,名为mytest,设置好项目属性,包含必要的库(包括lua和tolua++),添加如下代码:

// file: UsingIt.h
#include <iostream>

class my_class
{
public:
    void greet()
    {
        std::cout << “Hello World!” << std::endl;
    }
};

下面撰写我们的.pkg文件:

// file: mylib.pkg
$pfile “UsingIt.h”

class my_class
{
    my_class();
    ~my_class();

    void greet();
};
使用tolua++生成胶水函数实CPP文件:

tolua++ –n mylib –o mylib.cpp mylib.pkg
这条命令的意思是:使用tolua++程序,从mylib.pkg生成源代码并输出到mylib.cpp,而-n参数则是用来指定包名称的(lua 中package name)。你会得到mylib.cpp,文件,其中包含一个很重要的函数:int tolua_<package name>_open(lua_State*)。"package name”就是用-n指定,这里就是 int tolua_mylib_open(lua_State*),它的功能就是将你在.pkg文件中所撰写的类、函数接口等注册给lua,这个函数是需要你自己调用的。

回到我们的mytest项目,将上面得到的mylib.cpp文件加入到项目中,添加一个新文件Main.cpp:

// file: Main.cpp
#include <iostream>
#include <tulua++.h>
extern “C” {
#include <lua.h>
#include <luaxlib.h>
}
#include “UsingIt.h”

int main()
{
    lua_State* L = lua_open();
    luaL_openlibs();

    tolua_mylib_open(L); // 打开mylib
    luaL_dofile(L, “mytest.lua”); // 执行脚本文件

    lua_close(L);
    return 0;
}
mytest.lua脚本文件内容:

local my = my_class()
my:greet()

好了,编译并运行你的mytest程序吧,你将看到 Hello World! 出现在你的屏幕上!
就说到这里了,更深入的使用请参考tolua++的文档,有一点需要注意的是,tolua++并不支持导出虚函数类供lua代码派生实现。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值