Lua 和 C++ 交互
发布时间:2020-12-14 21:50:08 所属栏目:大数据 来源:网络整理
导读:step1、搭建好vs和lua相交互的环境: 1.下载一个lua5.3的源码; 2.有Lua_lib.lib这个文件; 3.开始配置: 鼠标放在工程名那: 右键选属性: ? 把包含目录点开进行编辑: ? 地址就选上面有源码的文件路径。 如上,把引用目录点开进行编辑地址是选lib文件的地
step1、搭建好vs和lua相交互的环境: 1.下载一个lua5.3的源码; 2.有Lua_lib.lib这个文件; 3.开始配置: 鼠标放在工程名那: 右键选属性: ? 把包含目录点开进行编辑: ? 地址就选上面有源码的文件路径。 如上,把引用目录点开进行编辑地址是选lib文件的地址 如上,把库目录点开进行编辑地址也是lib文件的地址 step2、给这个工程添加头文件: extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" }; 这样前期准备工作就做好了。 ? (一)cpp文件中调用lua文件的函数: <.lua文件> function Add(a,b) return a+b; end <.cpp文件> #include <iostream> using namespace std; #include"_lua.h" static lua_State *L = NULL; int ladd(int x,int y) ? (二)lua文件中调用cpp文件: <.cpp文件> //待Lua调用的C注册函数 static int add2(lua_State* L) { double op1 = luaL_checknumber(L,1);//检查某个参数是否为一个数字 double op2 = luaL_checknumber(L,2); //将函数的结果压入栈中。如果有多个返回值,可以在这里多次压入栈中。 lua_pushnumber(L,op1 + op2); return 1; } //待Lua调用的C注册函数。 static int sub2(lua_State* L) { double op1 = luaL_checknumber(L,1); double op2 = luaL_checknumber(L,2); lua_pushnumber(L,op1 - op2); return 1; } //待Lua调用的C注册函数。 static int l_sin (lua_State *L) ? <.lua文件> function show() print("--------------------") print(add2(1.0,2.0)) print(sub2(20.1,19)) print(l_sin(1)) end show() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |