LuaPlus的使用

LuaPlus 5.1 vs2010工程代码 LuaPlus 5.1 vs2010工程代码 完整 立即下载
看大家都在研究lua,也参与大潮中。。。折腾半天没折腾好,相当的无语时候,网上找的资料都是你抄写我,我抄袭他的。。

郁闷,只要边抄袭边修改,最后测试成功,整理一个完整的资料发表下。再次感谢“雪明”与一个不知名的网友文章,不知道原作者,也就不发链接了。

如何编译

1.下载

首先到官方网站下载: http://www.luaplus.org/

下载这个: All source code: https://github.com/jjensen/luaplus51-all (我当前的版本,当然越新越好);请在这里下载:http://wwhiz.com/LuaPlus/LuaPlus50_Build1081.zip

2.剥离

解开下载包,打开 \LuaPlus51_Build1100\Src\LuaPlus 里面是全部源文件,src下是lua的源文件.这里有个令人疑惑的地方,源文件中带了一些不需要的文件,要剔除去,基本上需要以下这些文件:

1)Lua库文件:

lapi.c

lapi.h

lauxlib.c

lauxlib.h

lbaselib.c

lcode.c

lcode.h

ldblib.c

ldebug.c

ldebug.h

ldo.c

ldo.h

ldump.c

lfunc.c

lfunc.h

lgc.c

lgc.h

linit.c

liolib.c

llex.c

llex.h

llimits.h

lmathlib.c

lmem.c

lmem.h

loadlib.c

lobject.c

lobject.h

lopcodes.c

lopcodes.h

loslib.c

lparser.c

lparser.h

lstate.c

lstate.h

lstring.c

lstring.h

lstrlib.c

ltable.c

ltable.h

ltablib.c

ltm.c

ltm.h

lua.h

luaconf.h

lualib.h

lundump.c

lundump.h

lvm.c

lvm.h

lzio.c

lzio.h

print.c

2)LuaPlus头文件:

auxiliar.h

LuaAutoBlock.h

LuaCall.h

LuaFunction.h

LuaHelper.h

LuaHelper_Object.h

LuaHelper_StackObject.h

LuaLink.h

LuaObject.h

LuaObject.inl

LuaPlus.h

LuaPlusCD.h

LuaPlusFunctions.h

LuaPlusInternal.h

LuaStackObject.h

LuaStackObject.inl

LuaStackTableIterator.h

LuaState.h

LuaState.inl

LuaStateOutFile.h

LuaTableIterator.h

luathread.h

pt.h

srm.h

3)LuaPlus源文件

LuaCall.cpp

LuaObject.cpp

LuaPlus.cpp

LuaPlusAddons.c

LuaPlusFunctions.cpp

LuaPlus_Libs.cpp

LuaStackObject.cpp

LuaStackTableIterator.cpp

LuaState.cpp

LuaStateOutFile.cpp

LuaState_DumpObject.cpp

LuaTableIterator.cpp

lwstrlib.c

用vs2005打开LuaPlus.vs2005.vcproj默认加载以后,选择release模式编译。。会在http://www.cnblogs.com/lib/win32生成库lib文件LuaPlus_1100.lib与http://www.cnblogs.com/Bin目录生成LuaPlus_1100.dll.

新建一个工程文件.来测试.将LuaPlus_1100.dll,LuaPlus_1100.lib拷贝到目录下。

#include <stdio.h>

--------------------------------------------------------------------------------------------------------------------------
#include "F:\程序源码\visual C++ code\lua\LuaPlus51_Build1100\Src\LuaPlus\luaPlus.h" //luaPlus头文件
#pragma comment(lib,"LuaPlus_1100.lib") //库文件
using namespace LuaPlus;

--------------------------------------------------------------------------------------------------------------------------

void main()
{
LuaStateOwner state;

int iret = state->DoFile("test.lua");

int mytest = state->GetGlobal("health").GetInteger();
LuaFunction <float> Add = state->GetGlobal("Add");
float myRet = Add(3.14f,5.25f);

getchar();
}

注意

healtth = 100;

function Add(int x,int y)
return x + y;
end

这样是错误的,当有语法错误时候,会导致DoFile返回值为1.即返回错误。

测试结果,有一个问题DoString("print('不显示???')");执行以后并没有打印。。

测试成功以后,在D盘新建sdk\luaplus目录

目录下新建include与lib文件夹,将luaplus/src目录下的文件拷贝到include目录,将lib库文件拷贝到lib目录。

修改头文件包含信息,编译出来的文件需要打包带上LuaPlus_1100.dll文件。

--------------------------------------------------------------------------------------------------------------------------

#include <LuaPlus.h>
#pragma comment(lib,"LuaPlus_1100.lib")
using namespace LuaPlus;

--------------------------------------------------------------------------------------------------------------------------

下面发一下转载的用法:

如何使用

接着讲讲如何在你的其他项目中使用LuaPlus.

1.必要的配置

你的项目可能是这样的:

设置GameClient的依赖项是LuaPlusLib

#include "LuaPlus.h"

using namespace LuaPlus;

记得干这事…


2.创建一个状态

LuaStateOwner state;

今后的操作都围绕这个state


3.执行脚本

int iret = state->DoFile("test.lua");

返回值为0表示成功,否则不成功.


4.C++中获取Lua脚本的变量

假设你的test.lua中有:

health = 200;

通过下列方法就可以在C++中得到这个数值

int mytest = state->GetGlobal("health").GetInteger();


5.C++中调用Lua脚本里的函数

假设你的test.lua中有:

function Add(x, y)

return x+y;

end

在C++中需要先声明这个函数:

LuaFunction<float> Add = state->GetGlobal("Add");

这样你就有了Add()这个函数,然后就可以像平常一样使用它了:

float myret = Add(3.14f,5.25f);


6.Lua脚本中调用C++函数

在读取test.lua之前要先把C++函数注册到Lua的运行时栈里,这样在执行lua脚本的时候,才知道执行哪一个函数:

首先有函数:

int LS_PrintNumber(LuaState* state)

{

LuaStack args(state);


if (args[1].IsNumber()) {

printf("%f\n", args[1].GetNumber());

}

return 0;

}

然后注册这个函数到Lua:

state->GetGlobals().Register("PrintNumber", LS_PrintNumber);

这样就把LS_PrintNumber映射为Lua中可以使用的函数PrintNumber.

Test.lua脚本中添加调用语句:

PrintNumber(30);

当state->DoFile("test.lua");执行的时候,就执行了C++中的这个函数.

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

相关推荐

LuaPlus 在VC6下编译

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

sryan的专栏 1054

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

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

新手学编程 2343

启动应用程序出现luainstall.dll找不到问题解决

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个luainstall.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现luainstall.dll丢失要怎么解决?

wbcmbfy的博客 434

Win7系统提示找不到luainstall.dll文件的解决办法

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个luainstall.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现luainstall.dll丢失要怎么解决?

file 965

LuaPlus上手指南

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

把握自己。 4807

baidu luaplus luabind

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

skyremember的专栏 6820

luaplus编译及使用

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

flyliying的专栏 2326

LuaPlus学习(一)

LuaPlus学习(一)

jfdfhh的博客 713

luaplus编译

luaplus 是一个lua的不错增强支持,能够很好的C++与lua之间互调,而且语法清晰,使用很容易上手,很多商业项目使用它。目前其基于的lua版本是5.1,而最近lua已经升级到lua5.2。有了一些新特性,期待luaplus的跟进吧,luaplus终于有事可做了。虽然开源手机引擎cocos2d-x使用tolua++,感觉是主要是根据需要,cocos2d-x主要是提供c++接口给lua调用,用

djvc的专栏 1840

LuaPlus上手(上)

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

hby95703的专栏 387

LuaPlusLua的C++增强

 LuaPlusLua的C++增强2008年08月28日 星期四 16:24LuaPlusLua的C++增强,也就是说,LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C++进行合作,是比较好的一个选择。LuaPlus目前版本为:LuaPlus for Lua 5.01 Distribution Build 1080 (February 28, 2004)。大家可以到

skyremember的专栏 808

[原创]LuaPlus上手指南(1)

 [原创]LuaPlus上手指南(1) LuaPlus上手指南(1)  版权所有,转载请注明出处,勿用于商业用途,谢谢!作者:    大宝天天见Blog:    http://www.cppblog.com/singohgod本人水平有限,有错请指出,欢迎交流,共同进步! 国内关于Lua的资料实在是太少,为了寻找一个合适的Lua的C++封装,真是如同大海捞针

skyremember的专栏 967

LuaPlus学习(四)

    一个完整的例子     试验了一个完整的例子。    在C++中生成一个类,注册到lua。    从lua调用C++类的成员函数。    在Alternate.lua中写了阶乘函数factorial。    从C++中调用factorial。    Alternate.lua如下:print("now in alternate.lua");p

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

LuaPlus使用入门

LuaPlus使用入门。

clever101的专栏 4691
上一篇: Lua调用C++函数代码示例
下一篇: Lua语言介绍
風雲工作室
博客等级 码龄18年 44粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值