Lua学习随笔 之 Lua下载 - 安装 - 编译 - C/C++相互调用
来源:互联网 发布:nginx ip跳转域名 编辑:程序博客网 时间:2024/06/06 02:37
下载:
编程环境:VS2013 - Win32控制台空项目 访问密码 4319
Lua版本:lua-5.3.3 访问密码 849b
编译:
下载好lua库以后,将其解压加载至工程,编译前,将库文件中 lua.c & luac.c 里的主函数(main)注释掉,或删除该文件,就可以正常编译了。
调用:
主函数文件 - code.c
#include "lua.h" #include "lualib.h" #include "lauxlib.h" #include "luaconf.h" #include <stdio.h> lua_State* L;int add(lua_State* L){lua_Integer x = luaL_checkinteger(L, 1);lua_Integer y = luaL_checkinteger(L, 2);printf("from C result:%d\n", x + y);return 1;} LUA_NUMBER lua_add(void){/* 获取L中的 lua_add函数 即 加载脚本中的 lua_add函数 */lua_getglobal(L, "lua_add");/* 压栈 即传参*/lua_pushnumber(L, 2);/* 压栈 即传参*/lua_pushnumber(L, 2);/* 调用当前加载函数,传入2个参数,期望获取1个返回值*/lua_call(L, 2, 1);/* 获取返回值 */LUA_NUMBER sum = lua_tonumber(L, -1);/* 弹栈 */lua_pop(L, 1);return sum;}int main(int argc, char *argv[]) {LUA_NUMBER sum;// lua脚本地址char path[256] = "F:/VSPro/love/Debug/727057301.lua";/* 分配空间 */L = luaL_newstate(); /* 加载库 */luaL_openlibs(L);/* 加载函数地址到 L 中 */lua_pushcfunction(L, add);/* 为函数地址设置调用名称 */lua_setglobal(L, "ADD");/* 加载lua脚本 */if (luaL_dofile(L, path)){printf("error\n");getchar();return 1;}#if 1sum = lua_add();printf("%lf", sum);#elselua_pcall(L, 0, 0, 0);lua_getglobal(L, "lua_add"); lua_pcall(L, 0, 0, 0);#endiflua_close(L);getchar();return 0;}
lua文件 - 727057301.lua
-- add two numbers function lua_add ( x, y ) print("from lua lua_add")-- print(x)-- print(y) ADD(2,3) return x + y end
附工程源码以供大家调试学习
lua调用应用 访问密码 19e0
2 0
- Lua学习随笔 之 Lua下载 - 安装 - 编译 - C/C++相互调用
- lua编程之lua与C相互调用
- lua study & c与lua相互调用
- c与lua 相互调用
- lua与C相互调用
- Lua学习笔记二之C中调用Lua
- Lua学习笔记三之从Lua中调用C
- Lua学习笔记--C调用Lua
- Lua学习笔记--Lua调用C初探
- c/c++与lua相互调用
- c/c++与lua相互调用
- C/C++与Lua的相互调用
- Object-C 和 lua的相互调用
- Lua编译器及Lua与C相互调用
- [LUA学习笔记03]LUA函数和C函数的相互调用
- Lua 学习教程之android与lua相互调用(二)
- [Lua]C/C++调用Lua
- [lua]C调用lua函数
- C语言中函数参数的省略号
- Error:Error: Expected resource of type raw [ResourceType]
- 以SpringMVC框架为中心疯狂扩展-10、添加Velocity依赖
- IOS - 上APPSTORE为何因IPv6被拒?
- C语言中结构体指针的定义和引用
- Lua学习随笔 之 Lua下载 - 安装 - 编译 - C/C++相互调用
- -如何优化C语言代码(程序员必读)
- OPENCV入门教程十五:bilateralFilter双边平滑
- 《Windows核心编程》之“Windows挂钩”(一)
- logcat event
- proc编译时报错:PCC-S-02015, unable to open include file
- C语言中的static 详细分析
- ms CRM 08/10/2015 - XRMtoobox的view function.
- UITableView 隐藏多余的分割线和实现分割线左边顶格的效果