1.首先安装LUA
下载Lua:http://www.lua.org/download.html
安装Lua —— 这里安装的是 Lua 5.1.4
2 VS2012 新建一个 HelloLua空项目
打开“HelloLua项目属性”——“通用配置”——”VC++目录“
修改其中的可执行文件目录,包含目录、库目录分别修改如下(添加如下文件路径):
可执行文件目录:D:\Lua\5.1
包含目录:D:\Lua\5.1\include
库目录:D:\Lua\5.1\lib
3 使用Lua
LUA代码
function mylua()
print("mylua")
ADD(1,2)
ADD(3,4)
end
C++调用
// TestLua.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
using namespace std;
#include <iostream>
#include <stdio.h>
/下面是必须要加的
extern "C" {
#include <lua.h>
}
extern "C"
{
#include <lualib.h>
#include <lauxlib.h>
}
#if defined (_DEBUG)
#pragma comment( lib, "lua5.1.lib" ) // Lua Support
#else
#pragma comment( lib, "lua51.lib" ) // Lua Support
#endif
不引用上面的lib会导致无法解析的外部符号错误
lua_State* L;
int add(lua_State* L);
int add(lua_State* L)
{
//从L栈中取出索引为1的数值,并检查
int x = luaL_checkint(L,1);
//从L栈中取出索引为2的数值,并检查
int y = luaL_checkint(L,2);
printf("result:%d\n",x+y);
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
//初始化全局L
L = luaL_newstate();
//打开库
luaL_openlibs(L);
//把函数压入栈中
lua_pushcfunction(L, add);
//设置全局ADD
lua_setglobal(L, "ADD");
//加载我们的lua脚本文件
if (luaL_loadfile(L,"D:\\mylua.lua"))
{
printf("error\n");
}
//安全检查
lua_pcall(L,0,0,0);
//push进lua函数
lua_getglobal(L, "mylua");
lua_pcall(L,0,0,0);
printf("hello my lua\n");
system("pause");
return 0;
}
简单调用方法
#include <iostream>
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#if defined (_DEBUG)
#pragma comment( lib, "lua5.1.lib" ) // Lua Support
#else
#pragma comment( lib, "lua51.lib" ) // Lua Support
#endif
int main()
{
lua_State *L = lua_open();
luaL_openlibs(L);
luaL_dofile(L, "learn.lua");
lua_close(L);
return 0;
}