在Win7下编译Lua5.2.3
来源:互联网 发布:球球大作战代点软件 编辑:程序博客网 时间:2024/06/05 04:15
参考了http://yizhenfei.is-programmer.com/posts/37578.html
环境
Windows 7
Visual Studio 2008
Lua 5.2.3
动机
因为自己比较弱,还不是非常习惯在Vim里看源代码,所以决定还是把阅读Lua源码的事情放在Windows平台上做。Source Insight不错,但是如果可以编译运行自己进行的一些小改动的话,应该能提高自己对代码的理解,因此打算在Visual Studio里读。(其实也有刚刚装了Visual Studio 2013,想尝鲜的缘故。)
官网上对于Windows下编译Lua的指南,最新的也仅是基于Visual Studio 2003了,而且是直接抛出了工程文件,参考意义是有的,但要想拥有灵活性,还是要自己动手,丰衣足食了。
建立项目
Lua的源代码编译后会生成三个对象:Lua库、基于该库的独立解释器以及字节码编译器。所以,在solution中,我们也要建立三个project与他们对应。在这里,暂且称整个solution为lua_vs11,三个project分别为lua_lib、lua、luac,类型都可以选择C++的空项目。
还没有读源代码,这里先按照网上的说法对源代码进行分配,lua.c放在lua项目下,luac.c放在luac项目下,其余的全部都是lua库的代码,扔在lua_lib下。
生成设置
首先,我们要设置lua以及luac依赖于lua_lib,这样可以保证lua_lib最先进行编译。(项目上右键,“项目依赖项”)
其次,我们要让lua以及luac中包含lua头文件的预处理指令正常得到展开。这里采用比较土的方法,是把lua_lib加入到lua以及luac的预处理器搜索目录中。(项目属性,VC++目录,包含目录)
最后,我们要让lua以及luac能够在链接时正常链接到lua_lib上,这里要做三件事:
1.我们要修改lua_lib项目的生成目标为静态库。(项目属性,常规,配置类型)
2.我们要让lua以及luac链接lua_lib.lib库。(项目属性,链接器,输入,附加依赖项)
3.我们要让lua以及luac搜索lua_lib.lib所在目录(即我们的生成目录),以正确的找到该库。(项目属性,链接器,常规,附加库目录)
生成解决方案即可!
之后把生成的lua_lib.lib,lua.exe,luac.exe放在root目录下,建立一个test工程,把lib包含进来。
写一个test.lua:
function foo (a) print("foo", a) return coroutine.yield(2*a) end co = coroutine.create(function (a,b) print("co-body", a, b) local r = foo(a+1) print("co-body", r) local r, s = coroutine.yield(a+b, a-b) print("co-body", r, s) return b, "end" end) print("main", coroutine.resume(co, 1, 10)) print("main", coroutine.resume(co, "r")) print("main", coroutine.resume(co, "x", "y")) print("main", coroutine.resume(co, "x", "y"))
在test工程里加个cpp写入:
extern "C" {#include "../lua-5.2.3/src/lua.h"#include "../lua-5.2.3/src/lualib.h"#include "../lua-5.2.3/src/lauxlib.h"}int main(int argc, char* argv[]){ lua_State *L = luaL_newstate(); luaL_openlibs(L); luaL_dofile(L, "test.lua"); lua_close(L); return 0;}
ok,编译应该没问题,运行就可以看到结果了:
- 在Win7下编译Lua5.2.3
- Winidows下编译lua5.2.3
- 在Windows下使用Visual Studio编译Lua5.3
- win10下编译lua5.3.4
- Vs2012 编译配置 Lua5.2.3
- windows下编译lua5.3源代码
- lua5.2.4再vs2012下编译失败
- win7 VS2013 新建工程 编译lua5.2.0 静态库
- win7 VS2013 新建工程 编译lua5.1 静态库
- win7 VS2008 不需新建工程 命令行编译lua5.1.5
- 在 Win7 下使用 VS2005 编译 Chrome
- boost1.43在win7下的编译
- jsoncpp在win7下用mingw编译
- 在 Win7 下使用 VS2005 编译 Chrome
- Cegui0.8.2在win7下的编译
- 在 Win7 下使用 VS2005 编译 Chrome
- 在Win7系统下编译GDAL库
- ZeroMQ在Win7下的编译
- sql server 2008 r2 升级
- JSP按下Backspace不跳转,使用ESC退出
- 常用正则表达式参考
- RealView MDK和RVDS的区别
- C/C++字符串处理函数,学会了就会简化好多问题
- 在Win7下编译Lua5.2.3
- Mysql5.6主从复制-基于binlog
- jsp + jquery 分页插件 (适用分页较多的情况)
- ExpandableListView 设置子节点分隔线颜色
- 程序性能分析工具
- Linux 网卡绑定实现
- 负载均衡:软件级负载均衡器(LVS/HAProxy/Nginx)的特点和对比
- 10月13日,百度2014校招移动研发笔试题
- 系统级I/O