C++中引入lua环境搭建
- 第一种: 联合的方式(不方便)
- 下载lua5.3.1 tar.gz
- 创建控制台项目, 静态库, 取消预编译头;
- C/C++>常规>附加包含目录: 加入5.3.1\src
- 编译得到lublib.lib
- 创建新工程
- 在vc++目录里添加包含目录 和库目录;
- 连接器里添加lualib.lib
- 编译; 如果失败则拷贝lualib.lib到根目录dubug下;
- OK
- 第二中: 生成静态库
- 新建控制台项目, 静态库, 取消预编译头;
- 将5.3.2的src中添加到项目中, 但 不要添加lua.c
- 编译得到xxx.lib, 这就是所得到的静态库
- 建立一个文件夹如lua5.3,分别在子文件夹lib里放入刚生成的xxx.lib(可以改名为lua5.3.2.lib)和include子文件夹里放入lua头文件: lauxlib.h, lua.h, luaconf.h, lualib.h
- 新建C++项目, 在”项目属性>VC++目录>包含目录和库目录里”添加上面的lib和include路径;
- “项目属性>连接器>输入”里添加lua5.3.2.lib
- OK
#include <stdio.h>
#include <string.h>
extern "C"
{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
}
int main(int argc, char* argv[])
{
lua_State *L = luaL_newstate();
luaL_openlibs(L); // 加载Lua通用扩展库
if(luaL_loadfile(L,"test.lua"||lua_pcall(L,0,0,0)) //或luaL_dofile(L,"test.lua")
printf("error pcall!: %s\n",lua_tostring(L,-1));
// 前面搭建了运行环境,lua代码写在了test.lua文件中
// ......
//
lua_close(L);
return 0;
}
C++调用Lua函数
要在C++中调用lua函数,则有如下函数可以利用:
lua_getglobal()
就是从lua中取得函数,压入栈中;随后压入函数的参数;
如在test.lua中有如下代码:
function he(x,y)
return x*y
end
则的C++中的调用过程是:
//.....
lua_getgloabl(L,"he");
lua_pushnumber(L,5);
lua_pushnumber(L,6);
// run the lua program
//