文章目录:
如何学习 Lua VM 的源码
2011年底开始阅读Lua代码,选择的版本是5.1.4,在那个时候是最新的版本了,不过2012年不仅有更新的5.1版本出来,还有最新的5.2.暂时管不了这么多,继续看这个版本先了。 历经近一年,中间酸甜苦辣只有自己知道,你问有什么方法,我的回答只有坚持。一边看代码,一看补一些基础(比如看龙书),到最后觉得差不多了就自己抄Lua虚拟机代码来跟踪它的实现。 我的博客上:,有我写的Lua分析文章,还没有完全写完。当然我现在也不认为我完全理解的通通透透了。 我最后希望能做到的是:把Lua某个版本的代码通透看完,在github上写一个开源的分析Lua源码的文档,最后能正确写一份英文的得到Lua社区的认可。 之 所以花这么大功夫去啃Lua代码,是因为我觉得Lua是门很好的语言,参见知乎我在其他帖子中对Lua的评价。另一方面是Lua的代码数量足够 小,5.1.4仅仅1.5W行,去掉空白行和注释估计能到1W行。Lua是世界最流行的脚本语言之一,前几年还进过top20的流行语言,另外又是 C\C++的完美伴侣。另外,我自己对如何实现一门语言也充满了好奇,Lua虽小五脏俱全而且还是正经实用的项目。就这些理由一直在支撑着我看下去。当然 现在最难的时候已经过去了。 其他人的文章,国内云风写的是最多的。不过我认为云风的文章key太高,很难follow,你如果对云风写的文章涉及的技术点没有什么涉猎就直接去看,可能很难看懂。 另外国外人写过的,最推荐的有: 《ANoFrillsIntroToLua51VMInstructions》 《The implementation of Lua 5.0》
cocos2d-x如何与Lua想结合使用 具体点
你好,关于这个问题,你只需要看一下C++如果调用lua就可以了,我给你一些参考,这是我曾经做过的调用测试,如果有问题,共同交流.
C++调用lua函数:
C++编译环境:Code::block 与lua-5.2.1源码包。
下载源码包后,解压,新建控制台工程,添加所有src目录下的代码,将lua.c文件从工程中移除,
然后进行编译,得到库文件(在bin目录下.dll and .a)。
然后将头文件与库文件分开放在二个目录下面。并添加到Code::block编译器中。
linksetting添加.a文件。
包含头文件:#include "lua.hpp"
如果是C工程,请这样写
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
连接库文件:.dll文件 和 .a文件
/*
*1.定义Lua的初始化变量
*2.luaL_newstate()初始化lua
*3.luaL_dofile()加载所有的lua库
*4.Lua_getglobal()得到lua文件中的函数名
*5.lua_pushnumber()将参数压入堆栈
*6.lua_call()调用(执行)lua函数
*7.lua_tonumber()得到lua函数的返回值
*8.lua_pop()将结果弹出堆栈,清空堆栈
*9.lua_close()关闭lua
*/
.cpp文件内容如下:
int main ( int argc, char *argv[] )
{
int sum;
lua_State* L;
L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "abc.lua");
lua_getglobal(L, "add");
lua_pushnumber(L, 10);
lua_pushnumber(L, 10);
lua_call(L, 2, 1);
sum = (int)lua_tonumber(L, -1);
lua_pop(L, 1);
printf( "The sum is %d\n", sum );
lua_close(L);
return 0;
}
.lua文件内容如下:
function add(a, b)
c = a+b
return c
end;
tolua倒闭了吗,官网都打不开了
boolean tag = true;
configure:3527: error: in `/Users/niko/memcachedbuild/libevent-1.4.14-stable':
configure:3531: error: C compiler cannot create executables
See `config.log' for more details.
难follow,你如果对云风写的文章涉及的技术点没有什么涉猎就直接去看,可能很难看懂。 另外国外人写过的,最推荐的有: 《ANoFrillsIntroToLua51VMInstructi
; lua_pushnumber(L, 10); lua_call(L, 2, 1); sum = (int)lua_tonumber(L, -1); lua_pop(L, 1); printf(
oToLua51VMInstructions》 《The implementation of Lua 5.0》cocos2d-x如何与Lua想结合使用 具体点你好,关于这个问题,你只需要看一下C++如果调用lua就可以了,我给你一些参考,这是我曾经做过的调用测试,如果有问题,共同交流.C+