lua语法简单,思路清晰,可以很好的描述我们的思想。
但其做为脚本语言最终也是要嵌入进我们的系统,才能为我们满足需求发光发热。
那我们现在就来看看lua要怎么与我们的c/c++系统相结合吧。
lua有几个简单的api可以很容易就可以和c/c++揉合到一起,当然,我们这里只关注最简单的
几个函数,具体深入还是要看用户手册。在这里只是提供一个helloworld。
lua_State Lua解释器
lua_open 打开一个lua解释器,返回lua_State指针
luaL_openlibs 加载默认lua库
luaL_dofile 解释执行脚本文件
luaL_dostring 解释执行脚本字符串
lua_close 释放lu解释器
完整代码如下:
// luaRules.cpp : 定义控制台应用程序的入口点。
//
extern "C" {
#include <lua/lua.h>
#include <lua/lualib.h>
#include <lua/lauxlib.h>
}
#pragma comment(lib,"libLua.lib")
/* the Lua interpreter */
lua_State * L;
int main ( int argc, char *argv[] )
{
int sum;
//创建一个指向Lua解释器的指针。
L = lua_open();
//函数加载Lua库
luaL_openlibs(L);
//加载脚本
luaL_dofile(L,"test.lua");
//执行字符串
luaL_dostring(L,"print(a)");
//关闭 释放资源
lua_close(L);
getchar();
return 0;
}
//
extern "C" {
#include <lua/lua.h>
#include <lua/lualib.h>
#include <lua/lauxlib.h>
}
#pragma comment(lib,"libLua.lib")
/* the Lua interpreter */
lua_State * L;
int main ( int argc, char *argv[] )
{
int sum;
//创建一个指向Lua解释器的指针。
L = lua_open();
//函数加载Lua库
luaL_openlibs(L);
//加载脚本
luaL_dofile(L,"test.lua");
//执行字符串
luaL_dostring(L,"print(a)");
//关闭 释放资源
lua_close(L);
getchar();
return 0;
}
a='hello world!' --lua文件很简单,就这一句
以上代码有几点要注意的
1)引入库的头文件时记得extern "C",当然也可以修改源码中Lua_API ,这个宏
2)库文件的名称可能不一定,因为我自己编译了lua,名称故意搞得不一样,以示区别
3)这一点最莫名其妙,为什么调试运行的时候提示变量未定义呢,而直接运行就没有问题呢?