lua和C语言互相调用的例子

之前都是看的lua脚本怎么写的,还有就是在之前的工作室仿照着写。没有真正懂LUA和C语言如何之间交互的。今天写了一个例子

首先我要实现的功能计算两个整数的和,就是x+y了。因为x和y是随时变化的,我又不想在C程序里修改,那么就把这两个参数放到lua脚本来传递。

那么我是如何实现的呢?

第一步:搭建window环境,使用vs2005 这个东西在网上搜索一下吧,很多。

第二步:写一下c函数的逻辑。

//testlua.c #include "stdafx.h" #include <stdio.h> extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" }

lua_State* L; int add(lua_State* L); int add(lua_State* L) { //从L栈中取出索引为1的数值,并检查 int x = luaL_checkint(L,1); //从L栈中取出索引为2的数值,并检查 int y = luaL_checkint(L,2); printf("result:%dn",x+y); return 1;

} int _tmain(int argc, _TCHAR* argv[])

{ //初始化全局L L = luaL_newstate(); //打开库 luaL_openlibs(L); //把函数压入栈中 lua_pushcfunction(L, add); //设置全局ADD lua_setglobal(L, "ADD"); //加载我们的lua脚本文件 if (luaL_loadfile(L,"E:workvsProjecttestLuamylua.lua"))

{ printf("errorn");

} //安全检查 lua_pcall(L,0,0,0); //push进lua函数 lua_getglobal(L, "mylua");

lua_pcall(L,0,0,0); printf("hello my luan"); return 0;

}

x下面是我的lua脚本代码,很简单

function mylua() print("mylua")
ADD(1,2)
ADD(3,4) end

ADD(1,2) 关联到注册到的add函数,把参数压入了。

最后输出结果为:

看是不是很简单啊

#C/C++##学习路径#
全部评论

相关推荐

头像
06-28 16:18
已编辑
北京体育大学 测试工程师
面试官周末在外边玩呢,然后约我一边玩,一边儿面试。基本上就是先对我英语能力做了一个考察,然后他做了一下部门的相关的介绍,以及对候选人能力的要求,基本上需要有一定的测试思维,然后沟通能力,然后就是要有开发能力,因为需求迭代的比较快要跟开发一起联动配合做一些自动化的实现,就是有一个相关的需求,能够实现相关的自动化用例需要的能力就是Python和JAVA,可能有一部分的c,c#。一开始是英文做了些介绍,说了1min,然后就是对我自动化能力的了解,然后组里边的一些自动化框架,然后接口自动化的了解,对Python能力的了解。这块儿就是又问了一些数据结构的相关的问题,贪心和动态规划的区别,比如说广度优先遍历和深度优先遍历的区别,然后出了一个场景题,如果我有一个是8byte的字符串,然后有4000个这样的字符串,那么你的bfs,队列要到多长?然后还有就是Python和c#的相关的结合,你可能要用什么样的方法?再就是问我对天津的看法,想不想来?我说之前我在京东的时候还想去天津的京东科技呢。然后面了面人家没要我。然后最后我反问。他是从0~1搭建自动化框架,还是你去完善自动化框架,然后他说正在招一个测试的leader去进行架构设计,然后找几个骨干的自动化测试工程师去实现相关的需求。你最主要的就是开发能力,要可以把一个相关的需求实现到自动化的场景这样子基本的能力要有。目前团队有10个人这样子,但是自动化测试工程师相对来说会少一些,所以说需求的基本上是自动化测试的工程师。然后我再问,可没可能涉及到一些大模型评测,然后一些大模型的微调之类的相关的工作。他说这块儿我们team里也有专门的算法评测团队,这块儿如果你想做的话也可以和他们一起去做,但是微调在现在的阶段是没有的。然后我又问了一下,还有技术面吗?他说如果通过了的话,有我的boss,我的领导再给你面一轮技术面完了再就是HR面一共30分钟面试公司:联想岗位:software&nbsp;QA&nbsp;engineer问题:如上
查看9道真题和解析
点赞 评论 收藏
分享
06-27 15:10
已编辑
门头沟学院 测试工程师
隔了有些时间了,写一写权当复盘。一面(有些记不清了):为什么选择做测试?看你之前实习是软测,为什么选择游测?你认为的游测和软测的区别在哪里?简历中的项目你主要做了什么?平时玩什么游戏?答:什么都玩,最近玩DOTA2多一些。现在比如说要新增一个斯温这个英雄,你要怎么对他进行测试?在测试工作中你的优势和劣势?postman你在工作中具体是怎么用的?可以详细说一下吗?二面(被疯狂拷打场景)一些和一面一样的问题:游测软测的差距?之前做的是软测,为什么不做了?我们聊一聊法环吧,法环的地图你要怎么测试?(然后是根据地图的延伸问题)你认为法环是怎么判断摔死的?如果你在一个低高度的地方卡住了,会死亡吗?他和在高处跌落的差别是什么?你谈到法环地图是无缝的,那你认为无缝是怎么做到的?你真的认为你说的根据任务的推进,法环地图角色出现、死亡与否是属于地图测试的部分吗?就这么点?你认为你说的这些测试点,地图就ok没问题了吗?我们再聊聊DOTA2吧,当年很有名的泉水钩,你认为导致的原因是什么?如果让你来修复这个逻辑,你会怎么修复?如果小精灵带人传送,而tf在传送回去一瞬间勾到了小精灵,那么小精灵是否能正常回城?tf出钩勾到人了,但这个过程被猛犸撞到了,会有怎么样的结果?这个结果你认为是怎么导致的?如果是你说的优先级,那么假设tf的优先级和猛犸冲的优先级是一样的,会有什么样的结果?那按你说的优先级,那这两者就卡着不动了吗?我们再聊一下米波吧,你对米波设计测试用例的话会怎么设计?(后面拓展就不聊了)反问环节,,,,,,,——————————————————————————————————————一面二面的面试官都说面得校招生,但我投的是暑期实习,可能就是按校招生标准来的,场景盛宴,被压力的很难受,还会一直追问,大多问题我现场想出来也答对了,但后续还是挂了,可能是因为没有游戏开发的经验
查看22道真题和解析
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务