c++ 调用lua
时间: 2023-06-21 18:09:08 浏览: 144
C++调用LUA
C++ 可以通过 Lua C API 调用 Lua 脚本,以下是一个简单的例子:
1. 首先需要在 C++ 代码中包含 Lua 的头文件:
```c++
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
```
2. 创建 Lua 状态机:
```c++
lua_State* L = luaL_newstate();
```
3. 加载并执行 Lua 脚本:
```c++
int error = luaL_loadfile(L, "test.lua") || lua_pcall(L, 0, 0, 0);
if (error)
{
fprintf(stderr, "%s", lua_tostring(L, -1));
lua_pop(L, 1);
}
```
4. 调用 Lua 函数:
```c++
lua_getglobal(L, "lua_func"); // 获取全局函数 lua_func
lua_pushinteger(L, 123); // 压入参数
lua_pushstring(L, "hello world");
if (lua_pcall(L, 2, 1, 0) != LUA_OK) // 调用函数
{
fprintf(stderr, "%s", lua_tostring(L, -1));
lua_pop(L, 1);
}
else
{
int result = lua_tointeger(L, -1); // 获取返回值
lua_pop(L, 1);
printf("result=%d\n", result);
}
```
5. 关闭 Lua 状态机:
```c++
lua_close(L);
```
上面的例子中,假设 Lua 脚本文件 test.lua 中定义了一个名为 lua_func 的函数,该函数接受两个参数,一个整数和一个字符串,返回一个整数。C++ 代码中调用该函数时,先获取全局函数 lua_func,然后将参数压入栈中,最后调用函数并获取返回值。
Lua C API 还提供了很多其他的函数和操作 Lua 数据类型的接口,具体可以参考 Lua 官方文档。
阅读全文