C语言和Lua交互(六)
来源:互联网 发布:兼职淘宝刷单可信吗 编辑:程序博客网 时间:2024/06/04 19:50
Lua调用C函数:将新的C函数注册到Lua中
直接上代码:
#include <stdio.h>#include <string.h>#include "lua.h"#include "lauxlib.h"#include "lualib.h"lua_State *L = NULL;//待注册的C函数。static int myadd(lua_State* L){ //double op1 = lua_tonumber(L,1);//获取参数,1表示Lua调用时的第一个参数(从左到右) //检查栈中的参数是否是数字,不是则抛出错误信息 double op1 = luaL_checknumber(L,1); double op2 = luaL_checknumber(L,2); //将函数的结果压入栈中。如果有多个返回值,可以在这里多次压入栈中。 lua_pushnumber(L,op1 + op2); //压入返回值结果数量 return 1;}//另一个待注册的C函数。static int mysub(lua_State* L){ double op1 = luaL_checknumber(L,1); double op2 = luaL_checknumber(L,2); lua_pushnumber(L,op1 - op2); return 1;}const char* testluacode = "print(myadd(100,20)) print(mysub(99,20))";int main(void){ L = luaL_newstate();//打开Lua,创建一个新环境(新的Lua状态) luaL_openlibs(L); //打开标准库, 如: print, pcall //lua_pushcfunction(L,myadd);//压入函数 //lua_setglobal(L,"myadd");//赋值全局变量 //和以下等价,将指定的函数注册为Lua的全局函数变量 //第一个参数为Lua在调用C函数时的全局函数名,第二个参数为实际C函数的指针。 lua_register(L, "myadd", myadd); lua_register(L, "mysub", mysub); //在Lua的代码块中使用已注册的C函数 if (luaL_dostring(L,testluacode)) printf("Failed to invoke.\n"); lua_close(L); return 0;}
0 0
- C语言和Lua交互(六)
- Lua和C语言的交互
- Lua和C语言的交互详解
- C语言和Lua交互(一)
- C语言和Lua交互(二)
- C语言和Lua交互(三)
- C语言和Lua交互(四)
- C语言和Lua交互(五)
- C语言和Lua交互(七)
- Lua和C语言的交互详解
- C和lua交互
- lua和C交互
- Lua和C语言的交互(一)
- Lua和C语言的交互(二)
- Lua和C语言的交互(三)
- Lua和C语言的交互(三)
- Lua和C语言的交互(二)
- Lua和C语言的交互(一)
- oracle round与trunc的区别 mod取余
- final关键字特点
- Nancy入门
- linux学习
- 文章标题
- C语言和Lua交互(六)
- [分块] BZOJ 2724 [Violet 6]蒲公英
- C++学习笔记(一)
- NO.11 系统恢复
- Fiddler简介
- 第一行代码android第二版的学习
- 支付宝自动跳入转账页面
- 面试题
- Django-模板(内置标签和过滤器)