LuaPlus学习(四)

LuaPlus学习(二)      用lua做配置文件    可以用lua做程序的配置文件。    LuaPlus提供了读写lua脚本文件的功能,我们可以将配置信息以Table的形式存储在lua脚本中,然后利用LuaPlus进行读取和更改。    一、创建配置文件    配置文件可以用文字编辑器创建,也可以在C++代码中创建。我们先在C++中创建。利用CreateTable创建一个名为"Window"的表格,利 阅读详情

<--!版权所有foruok,转载注明出处!-->

    一个完整的例子

     试验了一个完整的例子。     在C++中生成一个类,注册到lua。     从lua调用C++类的成员函数。     在Alternate.lua中写了阶乘函数factorial。     从C++中调用factorial。     Alternate.lua如下:
print("now in alternate.lua"); print("initial number of AxhSystem:"..AxhSystem:GetNumber());  AxhSystem:SetNumber(15); print("Change the number from lua,new:"..AxhSystem:GetNumber()); print("Now Set message to 'Hello world'"); AxhSystem:SetMessage("Hello world"); print("AxhSystem:GetMessage return:"..AxhSystem:GetMessage()); print(" now, enter a number to change AxhSystem's number:"); num=io.read("*number"); print("you enter:"..num); print("set to AxhSystem") AxhSystem:SetNumber(num); print("AxhSystem's new number="..AxhSystem:GetNumber()); function factorial(n)     if( n==0 ) then         return 1;     else         return n * factorial(n-1);     end end
    C++代码如下:
class CAxhSystem { public:     CAxhSystem():m_nNumber(0)     {         memset(m_szMsg, 0sizeof(m_szMsg));     }     ~CAxhSystem()     {     }     void SetNumber(int num)     {         m_nNumber = num;     }     int GetNumber()     {         return m_nNumber;     }     void SetMessage(const char * szMsg)     {         if(szMsg)             _tcsncpy(m_szMsg, szMsg, 256);     }     char * GetMessage()     {         return m_szMsg;     } protected:     int m_nNumber;     char m_szMsg[256]; } ; CAxhSystem g_system; LuaStateOwner g_state; LuaObject g_globalObj; int InitLua() {     g_state->OpenLibs();     g_globalObj = g_state->GetGlobals();     return 0; } int RegisterObject() {     LuaObject axhmetaobj = g_globalObj.CreateTable("AxhMetaTable");     axhmetaobj.SetObject("__index", axhmetaobj);     //register functor     axhmetaobj.RegisterObjectDirect("SetNumber", (const CAxhSystem*)0, CAxhSystem::SetNumber);     axhmetaobj.RegisterObjectDirect("GetNumber", (const CAxhSystem*)0, CAxhSystem::GetNumber);      axhmetaobj.RegisterObjectDirect("SetMessage", (const CAxhSystem*)0, CAxhSystem::SetMessage);      axhmetaobj.RegisterObjectDirect("GetMessage", (const CAxhSystem*)0, CAxhSystem::GetMessage);     //get lua object     LuaObject luasys =  g_state->BoxPointer(&g_system);     luasys.SetMetaTable(axhmetaobj);     g_globalObj.SetObject("AxhSystem", luasys);     return 0; } int _tmain(int argc, _TCHAR* argv[]) {     InitLua();     RegisterObject();     g_state->DoFile("Alternate.lua");     LuaFunction<int> factorial = g_state->GetGlobal("factorial");     printf(" Now call 'factoral' in Alternate.lua, enter a number:");     int number;     scanf("%d"&number);     printf("You ennter %d, it's factorial=%d ", number, factorial(number));     return 0; }
    OK,到这里已经可以在lua和c++之间做一些交互了,可以根据需要实现我们的目标了。     接下来我要好好学习lua了,不然没办法用它来写复杂的逻辑。 <--!版权所有foruok,转载注明出处!-->
LuaPlus 5.1 vs2010工程代码 LuaPlus 5.1 vs2010工程代码 完整 立即下载

相关推荐

Luaplus 53 Vs2015使用和编译

http://blog.csdn.net/lunatic7/article/details/77787970 博客上有使用和生成的方案 截图代码都有可自己生成其他vs版本

合宙LuatOS中8910API新增的sysplus接口的使用方法

8910 API新增sysplus接口的使用教程

weixin_60538941的博客 764

Luaplus 53 Vs2015编译 通过 附使用说明

Luaplus 53 Vs2015编译 通过 附使用说明 http://blog.csdn.net/lunatic7/article/details/77787970

luaplus Windows编译(一)

luaplus Windows编译(一) 基于vs2015 编译 luaplus5.3

yunteng521的博客 1029

研究2天的LuaPlus 5.3 静态库 编译通过无错误

luaPlus下载地址:点击打开链接 http://luaplus.org 看了好多文章 最终 还是自己想办法 跟每个人介绍的都不同 Src下边是lua53的原文件 tilde下边是luaplus51-all\Src\tilde 下边所有文件 剩下的是luaplus51-all\Src\LuaPlus\这些是luaplu...

新手学编程 2343

luaplus编译及使用

一 准备文件 LuaPlus下载 https://github.com/jjensen/luaplus51-all 具体地址:https://github.com/jjensen/luaplus51-all/archive/master.zip jamplus下载 这个最好还是下载现成的比较好,目录里面都比较全,自己编译的缺少一些文件,累死也编译不了LuaPlus ht

flyliying的专栏 2326

luaplus windows环境下 VC6编译

最近的项目中用到了lua,开始是直接使用lua自带的API进行调用,不过堆栈调来调去很麻烦,于是上网找lua 针对 C++的封装,经过一番权衡,最后选用了 luaplus。 本以为应该很容易就弄出来,结果坑爹的搞了一上午,在此写下编译过程,以方便后来人 1,下载源代码 http://luaplus.org/  这个是官网,不过坑爹是下载的资源只有git 这种方式,太麻烦。。(

poorb的专栏 1302

LuaPlus学习(一)

LuaPlus学习(一)

jfdfhh的博客 713

LuaPlus上手指南

版权所有,转载请注明出处,勿用于商业用途,谢谢! 作者:    大宝天天见 Blog:    http://www.cppblog.com/singohgod 本人水平有限,有错请指出,欢迎交流,共同进步!   国内关于Lua的资料实在是太少,为了寻找一个合适的LuaC++封装,真是如同大海捞针.在看了众多资料后锁定以下几种:LuaBind ToLua++ LuaPlu

把握自己。 4807

baidu luaplus luabind

luaplus介绍LuaPlus: 好用的Lua For C++扩展 - 沐枫小筑(C++) - C...LuaPlusLuaC++增强,也就是说,LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C++进行合作,是比较好的一个选择。 LuaPlus目前版本为:LuaPlus for Lua 5.01 Distribution Build 1080 (February 28, 200

skyremember的专栏 6820

LuaPlus学习(三)

        从lua调用C++函数和对象        利用LuaPlus可以方便的从C++中调用lua脚本,翻过也一样。通过注册函数或类对象,lua便可以访问C++。    一、C风格函数注册    Lua提供了C风格的回调函数注册,该函数原型如下:int Callback(LuaState* state);    无论是全局函数、类非虚函数、类虚

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

LuaPlus的使用

看大家都在研究lua,也参与大潮中。。。折腾半天没折腾好,相当的无语时候,网上找的资料都是你抄写我,我抄袭他的。。 郁闷,只要边抄袭边修改,最后测试成功,整理一个完整的资料发表下。再次感谢“雪明”与一个不知名的网友文章,不知道原作者,也就不发链接了。 如何编译 1.下载 首先到官方网站下载: http://www.luaplus.org/ 下载这个: All source code:

执着于我的执着 1530

tolua++LuaPlus

 脚本语言lua相关  使用lua和tolua++遇到的一个古怪问题收藏luaC++阅读全文>发表于 @ 2008年06月27日 16:25:00|评论(0AddFeedbackCountStack("2592343"))|收藏  tolua++初探(六)收藏一个比较完整的例子,演示了luac++的相互调用

skyremember的专栏 2210

LuaPlus上手()

如何编译  1.       下载 首先到官方网站下载: http://www.luaplus.org/   2.       剥离 解开下载包,打开 \LuaPlus51_Build1100\Src\LuaPlus 里面是全部源文件,src下是lua的源文件.这里有个令人疑惑的地方,源文件中带了一些不需要的文件,要剔除去,基本上需要以下这些文件: 1)

hby95703的专栏 387

LuaPlusLuaC++增强

 LuaPlusLuaC++增强,也就是说,LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C++进行合作,是比较好的一个选择。LuaPlus目前版本为:LuaPlus for Lua 5.01 Distribution Build 1080 (February 28, 2004)。大家可以到http://luaplus.org/ 站点下载:源码   (http://wwhiz

answer的专栏 3170

LuaPlus 在VC6下编译

http://blog.sina.com.cn/s/blog_66349acf0100w894.html LuaPlusLua的增强,可以说是LuaC++封装,并且提供了增强功能。 我有个项目想用Lua做一些外部扩展,而这个项目是在VC6下的工程,移植到vs200x比较痛苦。 LuaPlus官方当前只提供vs2008的工程,还需要用什么jam生成改工程,在

sryan的专栏 1054
上一篇: LuaPlus学习(三)
下一篇: tolua++初探(一)
foruok
foruok 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄21年 2万+粉丝 581原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

foruok

你可以选择打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值