您的位置:首页 > 编程语言 > Lua

lua与C/Cpp交互与集成

2015-07-22 17:02 281 查看
在C/C++中集成lua
1、把lua.c、makefile、luac.c这几个文件删除
2、对于xcode如果出现报错的情况处理,在lua的文件夹中查看解决办法

从C/C++项目中读取lua中的变量

lua_getglobal(L, "name")--直接把数字放到栈顶
if(lua_isnumber(l, -1))
int width = (int)lua_tonumber(l, -1)--isstring和isnumber 不是帮你转化而是帮你检查是否能转化成字符串和数字

其他的都是类似的;bool string

从C/C++项目中读取lua中的函数的方式:

学习调用无参无返回值函数
学习调用有参无返回值    注意多参数的情况是先入栈的后调用
学习调用无参有返回值    返回值就在栈顶,刻意直接获取
学习调用有参又返回值
学习调用多返回值的函数    多返回值第一个返回值是-2,因为他是第一个返回然后被压入栈顶,后来又被下一个返回值压入栈顶
调用lua函数的方式
pcall函数和获取栈值的注意
lua_pcall(m_pcall,n,r,f)//n 参数的个数,r 结果的个数,f失败的返回值
lua_pcall的参数进行设置;
注意下面一般熟用的是assert()进行

读取lua中的table和遍历table

lua_getglobal(l,"name")
if(lua_istable(l, -1))
{
}
char* getFiled(lua_State*l , const char* key)
{
char* rlt = null
lua_pushstring(L, key);--这样就可以把想要的值获取到
lua_gettable(l,-2);
if(lua_isstring(l, -2))
{
rlt =(char*) lua_tostring(L, -1);
lua_pop(l, 1);--注意这里可以查看一个luapop的函数的参数含义就能明白了
}
}
从lua中调用c函数入门:

编写一个供lua调用的函数

static int l_getName(lua_state* L)
{
lua_pushstring(L, "longlingxiu");--
return 1;
}
lua_pushcfunction(m_pLuastate, l_getName);
lua_setglobal(m_pLuastate,"getMyName");

luaL_dofile(m_pLuastate,"my.lua");
lua_pcall(m_pLuastate,0,0,-1);

然后在lua中调用getMyName这个函数就可以了;

深入理解编写C函数
1.理解供lua调用函数的原理
2.熟练编写有参数的c函数的编写
3.熟练编写多返回值的c函数供lua使用
4.熟练编写返回table的函数供lua使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: