C调用Lua函数

一:C语言环境搭建部分:

1.如何通过VS2015新建一个C语言项目,可以参考百度。大略步骤如下:新建一个Win32控制台应用程序,选下一步,选空项目,点完成,Ctrl+Shift+A建添加C++文件,把后缀改为.c,然后在此C文件中添加我们的以下第三部分的代码。

2.C调用lua函数的主要步骤为:函数入栈->参数入栈->lua_pcall,如果发生错误,lua_pcall返回非零,如果正确,返回0

3.需包含的头文件:

(1)lua.h头文件定义了Lua提供的基础函数,包括创建Lua环境、调用Lua函数(如lua_pcall)、读写Lua环境的全局变量,以及注册供Lua调用的新函数等。lua.h中定义所有内容都有一个lua_前缀。

(2)lauxlib.h定义了赋值库(auxiliary library,auxlib)提供的函数。它的所有定义都以luaL_开头(如luaL_loadbuffer)。辅助库是一个使用lua.h中API编写出的一个较高的抽象层。Lua的所有标准库编写都用到了辅助库

4.配置lua运行环境,可以参考VS2015中配置lua运行环境。就是把参照链接中的方式生成静态库,与src文件夹的内容拷贝进本项目,设置附加包含目录,附加库目录,和附加依赖项三个目录。lua环境就搭建好了

二:新建好工程好,按Ctrl+Shift+A新建一个源文件,命名为main.lua,输入以下内容

BoyName = "jon"
like = "apple"

function Hello(name, like)
    print(string.format("Hello, %s!, you like %s", name, like))
end

三:C语言代码部分:

#include <stdio.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>


int  main() { 
lua_State *l = luaL_newstate();
luaL_openlibs(l);
if (luaL_loadfile(l, "main.lua") || lua_pcall(l, 0, 0, 0))
perror("cannot run config %s", lua_tostring(l, -1));
lua_getglobal(l, "Hello");
lua_getglobal(l, "BoyName");
lua_getglobal(l, "like");
if (lua_pcall(l, 2, 0, 0) != 0)
perror("error running function 'f' :%s", lua_tostring(l, -1));
getch();
return 0; 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值