lua与C(二):LUA调用c

简介:

在lua中调用C函数

 

 c中的函数应该这样准备

 注册单个函数:

  所有可被lua调用的函数型为 typedef int (*lua_Cfunction)(lua_State*L)

  例如

其中返回值是其压入栈的函数返回值的数量

2.然后将函数置入栈中 lua_pushfunction()

3.将函数从栈中推给lua  lua_setglobal(L,name) name是在lua中这个函数的名字

 

注册一些函数,组成一个模块

1.首先定义这些函数

static int l_dir(lua_State*L){}

2.声明一个数组 包含模块中所有的函数及名称,数组元素类型为struct luaL_Reg

static const_struct luaL_Reg myLib[]={

{"lua中是函数名",c中的函数指针},

..

必须以{NULL,NULL}结尾

}

3.声明一个主函数

int luaopen_mylib(lua_State* L){

 luaL_register(L,"luamyLib",myLib)

return1

}

这样就创建了一个table luamyLib包含myLib里的所有函数

 

4.如果将c程序编程动态链接库,在lua中通过require("库名称")来得到这个table

 

 

 

目录
相关文章
|
消息中间件 JavaScript 小程序
Java与lua互相调用简单教程
Java与lua互相调用简单教程
Java与lua互相调用简单教程
|
NoSQL Linux 测试技术
Redis进阶实践之八Lua的Cjson在Linux下安装、使用和用C#调用Lua脚本
原文:Redis进阶实践之八Lua的Cjson在Linux下安装、使用和用C#调用Lua脚本 一、引言         学习Redis也有一段时间了,感触还是颇多的,但是自己很清楚,路还很长,还要继续。
2812 0
|
C++ 存储
Lua中调用C/C++函数 (转)
首先偶们会在C++中建立一个函数, 然后告知Lua有这个函数, 最后再执行它. 另外, 由于函数不是在Lua中定义的, 所以无法确定函数的正确性, 可能在调用过程中会出错, 因此偶们还会说说Lua出错处理的问题.
1773 0
|
BI 计算机视觉 Linux
Lua 调用 Opencv 的方法
Lua 调用 Opencv 的方法      最近想用 Lua 调用 Opencv 进行相关像素级操作,如:bitwise_and 或者 bitwise_or,从而完成图像 IoU 的计算。   那么,怎么用 Lua 调用 Opencv 呢?   查了 Torch 的官方文档,发现只有这么几个可以调用的包:   链接: https://github.
|
Java Python 存储
在JAVA中使用LUA脚本记,javaj调用lua脚本的函数(转)
最近在做一些奇怪的东西,需要Java应用能够接受用户提交的脚本并执行,网络部分我选择了NanoHTTPD提供基本的HTTP服务器支持,并在Java能承载的许多脚本语言中选择了很久,比如Rhino,Jython和JRuby之类,但它们都太过庞大,并且很难实现沙盒保护服务器环境。
3533 0
|
C++
lua如何调用C++函数
第一步是定义函数。所有在Lua中被调用的C/C++函数将使用下面一类指针进行调用: typedef int (*lua_CFunction) (lua_State *L); 换句话说,函数必须要以Lua解释器作为唯一的参数,并且返回一个唯一的整数。
1178 0
|
C++ JavaScript 前端开发
vs如何在C++中调用Lua
最近Cocos2dx的学习卡壳了,一般的照抄代码我不想写上来,但想示例也想得我头晕...为了放松大脑调整状态于是开始学习Lua。Lua的语法学习还是比较简单的,学过javascript或者vbscript的应该很容易就能上手,那些Lua独有的特性也是比较有趣,例如不定数目的多参数函数和随意的参数返回值等。
852 0