在当前解决方案下创建C++ Win32控制台程序,便于和Lua源码调试。
我创建的是HelloLua项目,右键HelloLua属性
C/C++ 常规---附加包含目录,添加LuaSrc目录
链接器—常规,添加生成的Lua5.3.4.lib目录
链接器---输入---依赖项
OK,Lua的环境属性配好了,如果有C++开发经验的应该很熟悉该流程。
下面编写代码:
// HelloLua.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
using namespace std;
/*
C++ 调用 Lua
*/
// 这是个C++程序, 所以要extern "C", 因为lua的头文件都是C格式的
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
int main()
{
lua_State* L;
//初始化lua,在5.2版本之前是用lua_open函数,发现这个函数在5.2中已经被遗弃,
//被新的函数luaL_newstate和lua_newstate替代。lua_newstate可自定义内存分配函数,
//luaL_newstate使用默认的内存分配方式.
L = luaL_newstate();
luaopen_base(L);
//load Lua base libraries
luaL_openlibs(L);
//加载1.lua文件,之前的版本luaL_dofile()函数的第二个参数要写绝对路径,否则执行后会提示“unprotected error in call to lua api(attampt to call a nil value)”错误
luaL_dofile(L, "1.lua");
//获取Lua脚本中的函数名
lua_getglobal(L, "add");
//传参,传入第一个参数
lua_pushnumber(L, 3);
//传入第二个参数
lua_pushnumber(L, 4);
//调用函数:带有2个参数和1个返回值
lua_call(L, 2, 1);
//获取调用结果
int sum = (int)lua_tonumber(L, -1);
lua_pop(L, 1);
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?