• 1796阅读
  • 2回复

72.Lua常用函数与强大的栈艺术 [复制链接]

上一主题 下一主题
离线啊冲
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2014-07-31

◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
免责声明
1.用户使用经由本网站下载的或取得的任何资料,其风险自行负担;因该等使用导致用户电脑系统损坏或资料流失,用户应负完全责任;
2.用户对本网站所使用的软件有非专属性使用权,但不得自行或许可任何第三方复制、修改、出售或衍生产品。
3.由于用户经由本网站上载或发布内容、与本网站连线、违反本服务条款或侵害其他人的任何权利导致任何第三人提出权利主张,
  用户同意赔偿本公司及其分公司、关联公司、代理人或其他合作伙伴及员工,并使其免受损害。
4.因用户进行上述内容在本网站的上载或发布,而导致任何第三方提出索赔要求或衍生的任何损害或损失,由用户承担全部责任

附:
根据二○○二年一月一日《计算机软件保护条例》规定:为了学习和
研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软
件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!

鉴于此,也希望大家按此说明研究软件!谢谢
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
============================================================
http://www.chajianyun.com
插件云(做模块,我们更专业)

风叶林技术论坛
http://www.hifyl.com/

讲师:天道酬勤
QQ:394999482

实地培训火热进行中~~

Lua

http://blog.csdn.net/sndaxdrs/article/details/6230999
http://www.cnblogs.com/hmxp8/archive/2011/11/23/2259777.html

***********************************
课时:3930

首先讲解LUA文章,已经在很多游戏中使用的。

打开VS2005开始使用,新建WIN32程序,静态库选中,预编译头不要,把SRC目录和LUALIB目录下的.H文件全部复制到当前项目下,编成的LIB库留用,DEBUG编完再弄RELESE版本,再建立Include目录。

再新建控制台程序,把刚才编译好的文件全部复制过来,附加包含目录里添加,编代码:

------------------------------
LuaFn.h
#pragma once
extern "C"
{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
}
#pragma comment(lib,"LuaLib.lib")
class CLuaFn
{
public:
         CLuaFn(void);
public:
         ~CLuaFn(void);
public:
         voidInit();          //初始化Lua对象指针参数
         voidClose();         //关闭Lua对象指针
         boolLoadLuaFile(constchar*pFileName); //加载指定的Lua文件
         boolCallFileFn(constchar*pFunctionName, int nParam1, intnParam2); //执行指定Lua文件中的函数
private:
         lua_State* m_pState;   //这个是LuaState对象指针,你可以一个lua文件对应一个
};



就是把LUA当成C语言的头文件来使用了(难道是C+++)。


-----------------
LuaFn.cpp
#include "StdAfx.h"
#include "LuaFn.h"
CLuaFn::CLuaFn(void)
         :m_pState(NULL)
{
}
CLuaFn::~CLuaFn(void)
{
}
void CLuaFn::Init()
{
         if(NULL == m_pState)
         {
                   m_pState= lua_open();
                   luaL_openlibs(m_pState);
         }
}
void CLuaFn::Close()
{
         if(NULL != m_pState)
         {
                   lua_close(m_pState);
                   m_pState= NULL;
         }
}
bool CLuaFn::LoadLuaFile(constchar*pFileName)
{
         intnRet= 0;
         if(NULL == m_pState)
         {
                   printf("[CLuaFn:: LoadLuaFile]m_pState Is NULL\r\n");
                   returnfalse;
         }
         nRet= luaL_dofile(m_pState, pFileName);
         if(nRet!= 0)
         {
                   printf("[CLuaFn:: LoadLuaFile]luaL_loadfile(%s) Is file(%d)(%s)\r\n",pFileName,nRet,lua_tostring(m_pState, -1));
                   returnfalse;
         }
         returntrue;
}
bool CLuaFn::CallFileFn(constchar*pFunctionName,intnParam1,intnParam2)
{
         intnRet= 0;
         if(NULL == m_pState)
         {
                   printf("[CLuaFn::CallFileFn]m_pState is NULL\r\n");
                   returnfalse;
         }
         lua_getglobal(m_pState, pFunctionName);  //Lua中得到一个全局变量,常量,函数
         lua_pushnumber(m_pState,nParam1);
         lua_pushnumber(m_pState,nParam2);
         nRet= lua_pcall(m_pState, 2, 1, 0);
         if(nRet!= 0)
         {
                   printf("[CLuaFn::CallFileFn]call function(%s) error(%d)\r\n",pFunctionName,nRet);
                   returnfalse;
         }
         if(lua_isnumber(m_pState,-1) == 1)
         {
                   intnSum= lua_tonumber(m_pState, -1);
                   printf("[CLuaFn::CallFileFn]Sum = %d\r\n", nSum);
         }
         returntrue;
}


写好代码后出错,修改后执行正确。

随笔:本节课就是按照教程中的链接文章一步一步的在演示讲解,LUA基础知识天道酬勤老师以前也做过,想了解的快来风叶林下载哦~
善者 慈悲心常在 无怨无恨 以苦为乐
默认压缩密码www.hifyl.com
文件分享密码问题:http://www.hifyl.com/read-htm-tid-4444.html
离线qq9268168

只看该作者 沙发  发表于: 2015-10-18
啥教程,是别人在网上发布的贴子,他拿过来用罢了
离线yu815412

只看该作者 板凳  发表于: 2015-11-22
不错,可以学习一下。。。。。。
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个