用VC编译lua源码,生成lua语言的解释器和编译器

1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编译源码,我们需要编译:

  • 一个静态库
  • 一个动态库
  • 一个lua语言解释器
  • 一个lua编译器

建立一个工静态库工程

  • 打开VC-->文件-->(点击)新建--(弹出框中选择)工程-->(win32 static library)
  • 创一个空的工程
  • 工程名为luaLib
  • 把lua中所有的源码添加,去掉其中的lua.c 和luac.c这两个文件
  • 编译生成一个以luaLib.lib结尾的静态库(后面使用)

建立一个工动态库工程

  • 打开VC-->文件-->(点击)新建--(弹出框中选择)工程-->(win32 Dynamic-link library)
  • 创一个空的工程
  • 工程名为luadll
  • 把lua中所有的源码添加,去掉其中的lua.c 和luac.c这两个文件
  • 编译生成一个luadll.dll结尾的静态库(后面使用)

建立一个控制台工程(生成解释器)

  • 打开VC-->文件-->(点击)新建--(弹出框中选择)工程-->(win32 console Application)
  • 创一个空的工程
  • 工程名为luaInterpreter
  • 只添加lua.c
  • 点击 工程--->设置---链接-->分类---(点下拉框)---输入---分类/模块库中加入上面生成的静态库名luaLib.lib
  • 为了编译时能找到刚才添加的静态库(luaLib.lib),把它,放到你的工程目录,即和*.dsp的同一个文件夹下。这样编译器会到这里查找这个库
  • 编译这样就可以生成一个luaInterpreter.exe文件。这个可执行文件可以运行你写的lua脚本.
  • 不过,你要把上面生成的luadll.dll文件和luaInterpreter.exe文件,放在同一个目录。
  • 然后打开一个dos窗口,进入你的luaInterpreter.exe文件所在的目录
  • 在命令行输入: luaInterpreter.exe test.lua
  • 就可以执行test.lua这个脚本了

现在用文本编辑器写下面的代码,保存为test.lua

function fact(n)
if n == 0 then
return 1
else
return n * fact(n - 1)
end
end
print("Enter a number:")
a = io.read("*number")
print(fact(a))

建立一个控制台工程(生成编译器)

  • 打开VC-->文件-->(点击)新建--(弹出框中选择)工程-->(win32 console Application)
  • 创一个空的工程
  • 工程名为luacompile
  • 只添加luac.c
  • 点击 工程--->设置---链接-->分类---(点下拉框)---输入---分类/模块库中加入上面生成的静态库名luaLib.lib
  • 为了编译时能找到刚才添加的静态库(luaLib.lib),把它,放到你的工程目录,即和*.dsp的同一个文件夹下。这样编译器会到这里查找这个库
  • 编译这样就可以生成一个luacompile.exe文件。这个可编译文件可以编译你写的lua脚本.

原文链接:http://www.cnblogs.com/activity-life/p/3583536.html

另外动态库和静态库的区别可参见: http://www.cnblogs.com/skynet/p/3372855.html

用VC编译lua源码,生成lua语言的解释器和编译器的更多相关文章

  1. ant编译solr源码生成eclipse项目,解决一直resolve,一直[ivy:retrieve]的问题

    这两天在学习solr,结果刚到编译solr源码就卡住了,足足卡了两天,网上找各种解决办法都是简单带过,说是缺少jar包,下载下来放到对应位置就好了....对应位置???咋不说这个问题用相应方法解决即可 ...

  2. Windows 上编译 corefx 源码生成 Linux 上可用的 System.Data.SqlClient.dll

    最近在排查一个奇怪的 EF Core 查询速度慢的问题,需要在 corefx 2.2.3 的 System.Data.SqlClient 源码中打点. github 上签出 corefx 的源代码,运 ...

  3. Lua源码编译之CL编译器编译

    通过使用VC下的CL编译器,可方便地编译Lua源码,而无需构造工程并设置各种选项: 以下以源码Lua5.3.1版本为例,将通过CL编译选项直接编译源码,为方便编译将采用批处理脚本,脚本放置在Lua解压 ...

  4. windows下编译lua源码

    所有的lua源码都放在了 src 文件夹下,当然,不同的lua版本目录结构有可能不一样,但是都会有 src 这个文件夹,只有这个才是我们编译必须的.而且lua越做越精简了,5.1的版本里面还有一些te ...

  5. <转>windows下编译lua源码

    因为之前一直使用 lua for windows 来搭建lua的使用环境,但是最新的 lua for windows 还没有lua5.2,我又想用这个版本的lua,所以被逼无奈只能自己编一下lua源码 ...

  6. 用vs2013编译lua源码方法(一)

    用vs2013编译lua源码方法 来源:网络    编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...

  7. 用vs2013编译lua源码方法

    1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下,这里假设解压到  F:\lua-5.2.3  注意下载的版本,如果是 ...

  8. 某Android手游的lua源码逆向分析与还原

    近日分析某一款Android上面的手游,反编译后再起asset目录下可以看到加密过的脚本,lib目录下发现lua的so 初步怀疑其使用lua脚本实现的 解密函数定位 动态跟踪解密函数流程 静态分析解密 ...

  9. lua源码学习篇三:赋值表达式解析的流程

    上节说到表达式的解析问题,exprstate函数用于解析普通的赋值表达式.lua语言支持多变量赋值.本文先从单变量赋值表达式讲起. a = b = c = a + b 对于简单的两个数的求和过程,lu ...

随机推荐

  1. 对于大数据量的Json解析

    近几天做了一个项目,需要解析大量的json数据,有一万多条,以前我用的都是Gson包去自动解析,但是速度真是不敢恭维,于是我又去查了其它的方法,发现fastjson的解析,发现速度直的是很快,在此我不 ...

  2. 微信小程序 设计理念指南

    在此处输入标题   微信小程序的几条开发建议 功能简约,场景贴近随用随走: 操作快捷方便,交互简单: 程序本身代码资源等文件大小限制在1MB之内,这是微信目前的硬限制,目的是为了使得最终到达用户设备上 ...

  3. 断言(ASSERT)的用法

    ASSERT ()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行.如果表达式不为0,则继续执行后面的语句.这个宏通常原来判 ...

  4. STM32正交编码器驱动电机

    1.编码器原理        什么是正交?如果两个信号相位相差90度,则这两个信号称为正交.由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向. 这里使用了TI12模式,例如当T1上升 ...

  5. linux下 tar解压 gz解压 bz2等各种解压文件使用方法

    http://alex09.iteye.com/blog/647128 大致总结了一下linux下各种格式的压缩包的压缩.解压方法. .tar 解包:tar xvf FileName.tar 打包:t ...

  6. Tomcat settings should be set in Tomcat Preference Page解决

    选择tomcat version,然户找到该tomcat的主目录,输入在tomcat home,下面的参数会自动配置,点击apply. 然后在左边选择advanced,同样把tomcat的主目录复制在 ...

  7. android camera 自定义开发

    1.检测是否有摄像头 /** Check if this device has a camera */ private boolean checkCameraHardware(Context cont ...

  8. 一个字体引发的bug

    delphi 7 中默认字体样式为‘MS Sans Serif’,一般情况下子级控件会继承父级一些属性,其中包括字体(包括字体大小,字体样式,颜色等)属性.如果动态创建控件且需要修改字体颜色或者大小时 ...

  9. Git撤销提交

    本文链接:http://volnet.github.io/#!docs/git/reset-to-old-version.md 在使用Git进行版本管理的时候,经常会遇到一些错误的提交. 在开始演示之 ...

  10. xtrabackup_binlog_pos_innodb 和 xtrabackup_binlog_info

    用过 xtrabackup 工具的 innobackupex 脚本备份数据的人可能会注意到,–apply-log 处理过的备份数据里有两个文件说明该备份数据对应的 binlog 的文件名和位置.但有时 ...