总结一下lua与C的相互调用
列举一个简单的例子
1.创建一个win32控台项目
2.下载lua库,安装.
3.设置动态链接(对于基础不扎实的千万记得设置),
项目>>属性>>连接器>>附加依赖项>>
默认安装位置 C:\Program Files (x86)\Lua\5.1\lib\lua5.1.lib(视步骤2的安装位置)
C文件
// hellolua.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
int foo(lua_State *L)
{
/* get number of arguments */
int n = lua_tonumber(L, 1); //取lua中的值
/* push the n */
lua_pushnumber(L, n + 1); //压入lua中的值
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
/* initialize Lua */
lua_State *L = lua_open();
/* load Lua base libraries */
luaL_openlibs(L);
/* register our function */
lua_register(L, "foo", foo);
/* run the script */
luaL_dofile(L, "a.lua");
/* cleanup Lua */
lua_close(L);
/* pause */
printf("Press enter to exit...");
getchar();
return 0;
}
a.lua文件
print(foo(99))
1、使用
lua_tonumber
、
lua_tostring
等函数,来取得传入的参数,比如
lua_tonumber(L, 1)
就是得到传入的第一个参数,且类型为数字
2、使用
lua_pushnumber
、
lua_pushstring
等函数,来将返回值压入Lua的环境中,因为Lua支持函数返回多个值,所以可以push多个返回值进Lua环境
整个实例文件