1、

下载得到 lua-5.1.4.tar.gz,解压得到 文件夹"lua-5.1.4"

2、

视频[02:00]

将 lua-5.1.4/etc/luavs.bat 复制到 lua-5.1.4/ 下,然后才能够正常的编译,[02:08]双击执行lua-5.1.4/luavs.bat(ZC:我还是放到cmd下来运行吧,可以看到相关信息)

ZC:编译生成的文件都是放在 lua-5.1.4/src中

3、

[02:53]编译OK之后,重要的是文件 lua-5.1.4/src/lua51.dll 和 lua-5.1.4/src/lua51.lib 。

[03:02]需要的是整个 目录"lua-5.1.4/src"

4、

[06:55]要使用 lua的话,首先要创建一个解释器的指针,是一个全局变量

[07:11]要用到这几个头文件:

  extern "C"

  {

    #include "lua.h"

    #include "lualib.h"

    #include "lauxlib.h"

  }

[07:22]∵ 它是用标准的纯C写的,所以需要加一个“extern "C"”

[07:47]需要用到 lua51.dll 和 lua51.lib

[10:40]定义 lua解释器的全局变量指针"lua_State *L;"

  [10:47]还要进行初始化 [11:08]"L = lua_open();"

5、

[12:10]讲解 如何使用 lua解释器指针

[12:47]它的返回类型 必须是整形(ZC: 这里的"它"指的是谁?应该是指下面的 定义的用于注册到lua解释器中去的C++函数)

  [13:00]参数类型必须是 lua_State*

  [13:20]返回的一般是 数量,∴我们一般返回的是 1  [31:05]说 return的值 是值 返回值的个数(ZC:但是他也不敢肯定)

  [14:15]int = lua_tointeger(lua_State*, 参数idx); // ZC: 参数idx 从1开始计数

  [15:07]函数必须是下面这样的样子:

    int 函数名(lua_State* _pLua) // 这里只包含一个参数

    {

      ... ...

      return 1;

    }

    这样的菜蔬才能注册到lua的解释器里面去

  [15:43]注册

    [16:22] luaL_register(lua_State*, "在脚本里面定义的函数的名称", 实际的在C++中定义的函数的指针);

      luaL_register(L, "F1F10", f1_f10);

  [17:36]还需要包含一个东西进工程(否则编译通不过)

    [18:16]lua的源码路径 ==> 加入到VC6-->Tools-->Options-->Dircttories--> "Show directories for:" 中的 "Include files"/"Executable files"/"Library files"/"Source files"  [19:25]ZC: 又把这里做的事情去掉了...

    [18:38]再次编译 还是不通过

    [19:07]ZC: 卧槽,居然是函数名写错了...应该是 lua_register(lua_State*, "在脚本里面定义的函数的名称", 实际的在C++中定义的函数的指针); (多了个"L")

[20:45] luaL_dostring(lua_State*, "需要执行的字符串");

  luaL_dostring(L, "F1F10()"); // [21:00]这里的参数个数[F1F10()的参数个数] 它是不关心的。

  [21:06]字符串的大小写,一定要区分

[22:42]EDIT 的设置:属性中"Want return"、"Multiline"要勾选

[29:42]lua脚本不支持解释汉字

[32:10] 获取脚本里面的 float/BOOL类型的参数的值

  [33:25] double = lua_tointeger(lua_State*, 参数idx); // double:双精度浮点数

  [34:00] BOOL = lua_toboolean(lua_State*, 参数idx); // ZC: 这里返回的是 BOOL还是bool?

  [39:27] 脚本里面的 布尔类型的参数,要写为 true/false,不能写为 1/0,写为 1/0的话 会解释出错误的结果

    ZC: 游戏还是报错退出了,那到底是不是 ∵ true/false,1/0 的问题呢?待测试...

  [41:00]选怪函数本身有问题,它被快速连续的调用两次的时候,游戏就报错退出了。脚本的编写 是没有问题的

    ZC: 选怪函数 只执行一次,照样游戏报错退出...

6、

我的VC6控制台 测试代码:

 #include <stdio.h>
#include <windows.h> extern "C"
{
#include "???/lua-5.1.4/src/lua.h"
#include "???/lua-5.1.4/src/lualib.h"
#include "???/lua-5.1.4/src/lauxlib.h"
} #pragma comment(lib, "lua51.lib") int Test(lua_State *_pLua)
{
int i = lua_tointeger(_pLua, );
float f = lua_tonumber(_pLua, ); // double:双精度浮点数
BOOL B = lua_toboolean(_pLua, ); // ZC: 这里返回的是 int (即 BOOL) printf("%d, %f, %d\n", i, f, B);
return ;
} void main()
{
//char* pcLua = "Test(1, 1.1, true);";
char* pcLua = "Test(1, 1.1, 0);"; lua_State *pLua = lua_open();
lua_register(pLua, "Test", Test);
luaL_dostring(pLua, pcLua); lua_close(pLua);
}

ZC:测试下来,脚本里面 布尔型的参数写成1/0时,解析出来的结果不对,打印出来都是 1 。

7、

lua_VC6环境的更多相关文章

  1. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  2. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

  3. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  4. win10 环境 gitbash 显示中文乱码问题处理

    gitbash 是 windows 环境下非常好用的命令行终端,可以模拟一下linux下的命令如ls / mkdir 等等,如果使用过程中遇到中文显示不完整或乱码的情况,多半是因为编码问题导致的,修改 ...

  5. Javascript 的执行环境(execution context)和作用域(scope)及垃圾回收

    执行环境有全局执行环境和函数执行环境之分,每次进入一个新执行环境,都会创建一个搜索变量和函数的作用域链.函数的局部环境不仅有权访问函数作用于中的变量,而且可以访问其外部环境,直到全局环境.全局执行环境 ...

  6. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  7. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  8. [APUE]UNIX进程的环境(下)

    一.共享库 共享库使得可执行文件中不再需要包含常用的库函数,而只需在所有进程都可存取的存储区中保存这种库例程的一个副本.程序第一次执行的时候或第一次调用某个库函数的时候,用动态链接方法将程序与共享库函 ...

  9. Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持

    Jexus 是一款运行于 Linux 平台,以支持  ASP.NET.PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器.最新版 5.8.2 已经发布,有如下更新: 1,现在大 ...

随机推荐

  1. [lr] 矫正白平衡

    中性色区域 • 定义 中性色又称为无彩色系,是指由黑色.白色及由黑白调和成的各种深浅不同的灰色系列.中性色既不属于冷色调,也不属于暖色调.黑白灰是常用到的三大中性色.中性色区域是指不包含色彩的区域,准 ...

  2. JSP—中文乱码

    中文乱码问题? --------------------------------------- 不乱码的条件: 1.JSP页面本身的编码 pageEncoding UTF-8 (把jsp页面翻译成ja ...

  3. kafka集群监控工具之三--kafka Offset Monitor

    1.介绍 一般情况下,功能简单的kafka项目  使用运维命令+kafka Offset Monitor 就足够用了. 2.使用2.1 部署 github下载jar包 KafkaOffsetMonit ...

  4. Linux基础命令---yes

    yes 反复的输出指定的字符串,直到手动停止.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora.   1.语法      yes [STR ...

  5. 基于GIT的管理

    常用命令 git init : 初始化仓库git add 文件名 :把文件添加到暂存区git commit -m "操作记录" : 提交到仓库,设置相关操作的记录 git stat ...

  6. 从1.6W名面试者中收集的Java面试题精选汇总(内附知识脑图)

      本篇的面试题是接之前读者的要求,发出来的. 首先,声明下,以下知识点并非全部来自BAT的面试题. 如果觉得在本文中笔者总结的内容能对你有所帮助,可以点赞关注一下. 本文会以引出问题为主,后面有时间 ...

  7. cojs 强连通图计数1-2 题解报告

    OwO 题目含义都是一样的,只是数据范围扩大了 对于n<=7的问题,我们直接暴力搜索就可以了 对于n<=1000的问题,我们不难联想到<主旋律>这一道题 没错,只需要把方程改一 ...

  8. Python中模块(Module)和包(Package)的区别

    本文绝大部分内容转载至:廖雪峰官方网站 1. 模块(Module) 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函 ...

  9. Idea中Maven仓库配置会自动恢复

    手头有好几个项目,关闭一个项目,打开另一个项目,发现又在重新下载jar包,打开设置一看,maven配置又恢复到了.m2下边.idea配置的maven会自动恢复吗? 答案是否定的,idea的设置有两个, ...

  10. python3 isinstance()判断元素是否是字符串、int型、float型

    python3 isinstance()判断元素是否是字符串.int型.float型 isinstance是Python中的一个内建函数 语法: isinstance(object, classinf ...