一: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;
}