Lua调用C函数有两种方式
- 程序主体在C中运行,C函数注册到Lua中。C调用Lua,Lua调用C注册的函数,C或者Lua得到函数的执行结果。
- 程序主体在Lua中运行,C函数作为库函数供Lua使用。
C++的代码如下
如何在Lua脚本中调用这个C语言函数(add_function)?
#include <QCoreApplication>
#include <stdio.h>
extern "C"{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
/* C语言函数 */
int add_function(lua_State* L)
{
/* 从Lua栈中获取参数 */
double x = luaL_checknumber(L, 1);
double y = luaL_checknumber(L, 2);
/* 执行函数操作 */
double z = x + y;
/* 将结果压入Lua栈中 */
lua_pushnumber(L, z);
/* 返回结果数量 */
return 1;
}
lua_State *L;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
printf("started\r\n");
L = luaL_newstate();//新建lua解释器
luaL_openlibs(L);//载入lua基础库
#if 1
/* 将add_function函数绑定到Lua中的call_add_function函数,这样就可以在Lua脚本中调用这个C语言函数了 */
lua_register(L, "call_add_function", add_function);
/* 加载Lua脚本文件 */
luaL_dofile(L, "./test.lua");
//执行lua中的callcfun函数
lua_getglobal(L, "callcfun");
lua_call(L, 0, 0);
#endif
/*cleanup Lua*/
lua_close(L);
system("pause");
return a.exec();
}
lua调用C++函数
新建 text.lua,代码如下:
-- Lua脚本(在Lua脚本中,可以使用以下代码来调用C语言函数)
function callcfun()
local z = call_add_function(1.5, 2.3)
print(z) -- 输出3.8
end
标签:function,调用,函数,lua,C++,Lua,add
From: https://blog.csdn.net/hellokandy/article/details/136687945