读书人

请问在C/C++中嵌入Lua可以实现解析自

发布时间: 2012-02-13 17:20:26 作者: rapoo

请教,在C/C++中嵌入Lua可以实现解析自己写的字符串码逻辑吗?
没接触过脚本语言,所以估计“文章标题”的表达不太正确,我的意思如下:
写一个如下的文本,类似于c程序吧,保存为txt文件,然后c++读该文件,a是c++里面的某变量,DoA、DoB是c++内的函数,解析出逻辑,然后根据a选择执行;
if (a)
{
DoA(1, 2);
}
else
{
DoB(3, 4);
}
又或者,这个将上面的逻辑写成lua脚本,在C/C++中嵌入Lua之后,逻辑动作就会自然执行?
一般都是怎么做的呢?请讲详细一些


[解决办法]
C++中可以使用回调函数;在Perl、Python这样的脚本程序也可以嵌入到C、C++中;也可以使用C、C++编译一个库,在Perl、Python中调用。
[解决办法]
不是很明白楼主的意思,那个txt和代码是什么关系,C++中嵌入Lua要用到Lua的库
[解决办法]
可以了,lua_dostring
[解决办法]
Forcal对楼主的项目会有帮助。
欢迎访问:http://www.forcal.net/
[解决办法]
可以了,lua_dostring
[解决办法]
lua_State *L = lua_open(); //建立一个LUA状态机

  luaopen_base(L); // 启动它

  const char *buf = "print('hello, world!')";   lua_dostring(buf); //把buf写入到lua中并执行

  lua_close(L); // 关闭L

  lua_pushstring(L, "var"); //将变量的名字放入栈]

  lua_getglobal(L, "var"); //变量的值现在栈顶

  int var = lua_tonumber(L, -1); //取得栈顶的元素

  lua_tostring( ls, -1 ); //取得栈顶的的元素, 一般用于参数传递

  lua_pushstring( ls, s_szPlayer ); //把某个字符串元素压入栈中,可用于参数传出

  lua_pushnumber(L, 200); //把某个数字元素压入栈中,

  lua_register(L, "foo", foo);

//把自己在C++中编写的函数foo拿到lua中注册,这样在lua脚本中就可以调用这个函数

在Lua中,函数等同于变量,所以你可以这样来取得这个函数:
lua_getglobal(L, "main");//函数现在栈顶

现在,我们可以调用这个函数,并传递给它正确的参数:

lua_pushnumber(L, 100); //将参数压栈

  lua_pcall(L, 1, 1, 0); //调用函数,有一个参数,一个返回值  //返回值现在栈顶

  int result = lua_tonumber(L, -1);

读书人网 >perl python

热点推荐