lua5.3调用C/C++】的更多相关文章

马上面临毕业设计,打算做点跟网游有关的,先从做周边工具开始,目前正在做一个协议序列化和反序列化的东西,广告一波先: https://github.com/Anti-Magic/rproto 目前非常简陋,功能还没做完,不要当真.. 因为目标是绑定到lua,作为一个独立的库,不想对项目有依赖,这样的好处是客户端和服务端都可以方便的拿来用,所以打算手动绑定. 我夜观天象发现,到目前为止网上找不到针对lua5.3的这么简明扼要且完整的示例,转载注明出处:http://www.cnblogs.com/w…
Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记    侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思路体现出来. 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用.demo 4,该技术什么时候用?test. ------------------------------------…
<果壳中的C# C# 5.0 权威指南> ========== ========== ==========[作者] (美) Joseph Albahari (美) Ben Albahari[译者] (中) 陈昇 管学理 曾少宁 杨庆川[出版] 中国水利水电出版社[版次] 2013年08月 第1版[印次] 2013年08月 第1次 印刷[定价] 118.00元========== ========== ========== [前言] C# 5.0 是微软旗舰编程语言的第4次重大升级. C# 5.…
Lua能够调用C函数的能力将极大的提高Lua的可扩展性和可用性. 对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们全然能够通过C函数来实现,之后再通过Lua调用指定的C函数. 对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L). 简单说明一下,该函数类型只包括一个表示Lua环境的指针作为其唯一的參数,实现者能够通过该指针进一步获取Lua代码中实际传入的參数.返回值是整型,表示该C…
Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows环境下Lua的下载以及安装注意事项:2.Visual C++6.0中Lua的配置:3.C程序与Lua脚本相互调用实例. 1.Windows环境下Lua的下载以及安装注意事项 a.下载Lua for Windows,笔者用的版本是V5.1.4-35: b.上微软官网,下载Visual C++运行库——vcred…
主要参考这篇文章,原文有几个错误顺便改正了. 在Windows下使用Visual Studio编译Lua5.3 写本文时Lua官方网站放出的新版本为5.3.1,然后我不知道为啥,神奇的国内不能访问Lua官网,但是作为程序员搞到源码应该不是难事. VS2013中新建工程,设置如图 工程名Lua53,并且勾选Create directory for solution 应用程序设置静态库,其他选项全去掉 首先删除Lua源码文件夹中的Makefile文件,我们用不着这东西,至少我不用... 然后把除 l…
第一步是定义函数.所有在Lua中被调用的C/C++函数将使用下面一类指针进行调用: typedef int (*lua_CFunction) (lua_State *L); 换句话说,函数必须要以Lua解释器作为唯一的参数,并且返回一个唯一的整数.由于用一个Lua解释器作为参数,因此函数实际上能够从栈中取得任意数量的参数. 在后面我们将看到,返回的整数实际上是被压入栈的值的个数.通过如此容易的封装,就能满足你在Lua中调用C++函数的需求. 下面给出的C++函数average()演示了如何接受多…
最近Cocos2dx的学习卡壳了,一般的照抄代码我不想写上来,但想示例也想得我头晕...为了放松大脑调整状态于是开始学习Lua.Lua的语法学习还是比较简单的,学过javascript或者vbscript的应该很容易就能上手,那些Lua独有的特性也是比较有趣,例如不定数目的多参数函数和随意的参数返回值等. 这里想要吐槽一下最近用来学习Lua的书籍<XX开发实践指南>(虽然没有写全名不过搜索过Lua学习资料的童鞋应该都懂是哪本书),不知道是作者问题还是译者问题,有些地方的解释说明有点糟糕,要么不…
Lua学习笔记 vs2013如何在C++中调用Lua (此为转载教程) 本人试过完全可行 一.准备工作 1.下载Lua源码,地址:http://www.lua.org/download.html(我用的是目前最新版5.2.3) 2.将源码放在合适的盘(我的在D盘,路径D:/Lua-5.2.3/src) 3.打开vs2013新建一个win32控制台应用程序(Win32 console project ),我将他取名为LuaLib 4.确定后,会弹出应用程序向导的提示框,点击下一步.应用程序类型选择…
LUA调用C lua解析中集成了一些系统服务, 故脚本中可以访问系统资源, 例如, lua脚本可以调用文件系统接口, 可以调用数学库, 但是总存在一些lua脚本中访问不到的系统服务或者扩展功能, 如果这些系统服务或者扩展功能是使用C语言实现, 那么可以, 使用lua库的对C库的封装方法, 将其中功能封装成lua 接口, 这样脚本就调用这些lua接口调用这些功能. ------- 这种情况,是以lua脚本作为宿主程序. C调用LUA 另外一种场景,是C程序作为宿主程序, 调用LUA脚本, 例如将l…
{--1.环境--} 为了快速入手,使用了小巧快速的vc++6.0编译器 以及在官网下载了Lua安装包..官网地址{--http://10.21.210.18/seeyon/index.jsp--} 两者都安装好后,即可进行 {--2.工程以及配置--} 1.首先用vc++6.0创建一个简单的win32 console application 2.从Lua的安装目录下复制include和lib两个目录下的文件到刚刚创建的工程的目录下. {include:包含了lua的.h头文件} {lib:包含…
Lua5.1基本函数库介绍assert (v [, message])功能:相当于C的断言,参数:v:当表达式v为nil或false将触发错误,message:发生错误时返回的信息,默认为"assertion failed!"collectgarbage (opt [, arg])功能:是垃圾收集器的通用接口,用于操作垃圾收集器参数:opt:操作方法标志"stop": 停止垃圾收集器"restart": 重启垃圾收集器"collect&…
因为我们服务器极有可能要迁移到 skynet 上,它基于 lua5.3,而服务器和客户端会公用很多lua代码,所以在考虑在客户端 slua 中使用 lua5.3. 经过编译后,发现 slua 对 lua5.3的支持还有很多bug,可能是目前用的人比较少,最严重的一个问题是在 lua5.3 下,在 slua 中使用协程调用 Yield 会直接导致 unity 闪退,mono.dll 中出现内存非法访问,后来测试只发现是在绑定的协程的回调出问题,由于我对 lua 还不够熟悉,对这部分代码也没深入理解…
一) .建立lua源代码工程,编译lua的静态库 1.下载Lua源码 http://www.lua.org/download.html a 下载后解压到一个目录下,这里假设解压到D:\lua-5.1.5b 注意下载的版本,如果是5.2.x,后面代码中的C API发生了改变2.在VS2010中新建一个静态库项目,项目命名为lua     a 选择新建 Win32 console project     b 在wizard界面选择 static Library:不选择Precomplied Head…
通过c++调用lua 脚本,    环境VC++6.0    lua  sdk 5.1.4 在调用前先认识几个函数.1.调用lua_open()将创建一个指向Lua解释器的指针.2. luaL_openlibs()函数加载Lua库.3.使用luaL_dofile()加载脚本并运行脚本.4. lua_close()来关闭Lua指向解释器的指针. 5.调用lua_getglobal()将add()函数压入栈顶,add()为lua函数.6.第一个参数x,通过调用lua_pushnumber()入栈.7…
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5804924.html 原始网址: http://www.troubleshooters.com/codecorn/lua/lua_lua_calls_c.htm 1. 新建hellofunc.c,输入: /* hellofunc.c (C) 2011 by Steve Litt * gcc -Wall -shared -fPIC -o Cfunc.so -I/usr/include/lua5.1 -…
依赖包(附件有下载): 包名 类型 操作系统 luajava-1.1.jar jar ALL libluajava-1.1.so .so linux luajava-1.1.dll .dll windows windows: 将luajava-1.1.dll拷贝到java.libary.path目录(通过System.getProperty("java.library.path")可以知道) linux: 将libluajava-1.1.so拷贝到java.libary.path目录(…
Java 调用 Lua app发版成本高,覆盖速度慢,覆盖率页低.一些策略上的东西如果能够从服务端控制会方便一些.所以考虑使用Lua这种嵌入式语言作为策略实现,Java则是宿主语言. 总体上看是一个模板方法模式.Lua提供模板方法,其中需要的一些具体实现则有宿主语言Java提供. 1. Luaj:Java与Lua的桥梁 能够作为Java与Lua进行通信的桥梁工具还有别的一些.但是Luaj 是用纯Java实现,客户端容易加载.且目前还一直有更新和维护,相对感觉靠谱. 需要注意的是: 新版的LuaJ…
1.首先说下目的,为什么要这么做 ? 正式项目中,希望主程序尽量不做修改,于是使用C/C++完成功能的主干(即不需要经常变动的部分)用lua这类轻量级的解释性语言实现一些存在不确定性的功能逻辑:所以,程序功能如有问题,只需对lua脚本作出修改,而修改脚本的好处是简单高效,改完脚本后重新执行程序便能看到效果.  2.具体怎么做? 一般来说,C/C++调用lua接口或是数据交互,首先要做的是包含lua相关操作的头文件以及lua库相关的头文件,然后调用接口创建lua环境.用操作栈的规则和lua交互数据…
为Lua5.3编写C模块简单示例 一.编译安装Lua5.3 MSVC 命令行安装脚本: @echo off md bin md lib md include cd src cl /c /nologo /W3 /O2 /Ob1 /Oi /Gs /MD /D_CRT_SECURE_NO_DEPRECATE l*.c ren lua.obj lua.o ren luac.obj luac.o lib /OUT:lua53.lib *.obj copy lua53.lib ..\lib\lua53.li…
Lua5.3 注册表 _G _ENV 来源:http://blog.csdn.net/murisly/article/details/46518551 注册表的描述,借用PIL中的一段话: registry 一直位于一个由 LUA_REGISTRYINDEX 定义的值所对应的假索引(pseudo-index)的位置.一个假索引除了他对应的值不在栈中之外,其他都类似于栈中的索引.Lua API 中大部分接受索引作为参数的函数,也都可以接受假索引作为参数-除了那些操作栈本身的函数,比如 lua_re…
前面的话 第一次接触Lua是因为Unity游戏中需要热更,但是一直没搞懂Lua是怎么嵌入到别的语言中执行的,如何互相调用的.这次打算好好了解一下C跟lua是如何交互的 那么如何使用Lua语言? lua是c语言编写的,而且开源.可以在https://www.lua.org官网上下载Lua的源码,然后尝试编译它!是不是跟我一样好激动,一直用集成环境,写上层语言,今天居然要碰编译了!!~ 可怎么编译呢? 让我们召唤出编译神器:gcc![GNU编译器套件(GNU Compiler Collection)…
Lua的版本差异确实是比较让人头疼的事情,之前在移动端一直采用Android下使用LuaJit,Ios下使用Lua5.1.这次升级到Xlua(lua5.3版本)主要有两方面的原因:一是ulua后续维护比价差,决定要升级到xlua,另一方面是公司在上线检查中提示禁止Luajit的使用(一些Crash无法解决),当然顺便解决了bit.64位问题. 1. 改变 参考:5.1 到 5.2 .5.2 到 5.3 .云风:Lua 5.2 的细节改变 2. Module 5.2中抛弃module,建议使用re…
1.安装lua环境 先查看一下apt可获取的lua版本 我们选择lua5.1版本进行安装 sudo apt install lua5.1 安装完之后测试一下是否安装成功,如果可以正常使用,则lua环境已经安装完毕. 2.安装lua相关的c库 lua环境安装完毕,但是此时在c中还不能对lua进行调用,或者生成供lua调用的c库,因为还没有安装lua的c库,通过下面这条命令安装相应的库文件和头文件 sudo apt-get install lua5.1-0-dev 安装完毕后,我们写代码进行测试 2…
主要参考这篇文章,原文有几个错误顺便改正了. 在Windows下使用Visual Studio编译Lua5.3 写本文时Lua官方网站放出的新版本为5.3.1,然后我不知道为啥,神奇的国内不能访问Lua官网,但是作为程序员搞到源码应该不是难事. VS2013中新建工程,设置如图 工程名Lua53,并且勾选Create directory for solution 应用程序设置静态库,其他选项全去掉 首先删除Lua源码文件夹中的Makefile文件,我们用不着这东西,至少我不用... 然后把除 l…
lua是扩展性非常良好的语言,虽然核心非常精简,但是用户可以依靠lua库来实现大部分工作.除此之外,lua还可以通过与C函数相互调用来扩展程序功能.在C中嵌入lua脚本既可以让用户在不重新编译代码的情况下修改lua代码更新程序,也可以给用户提供一个自由定制的接口,这种方法遵循了机制与策略分离的原则.在lua中调用C函数可以提高程序的运行效率.lua与C的相互调用在工程中相当实用,本文就来讲解lua与C相互调用的方法. Lua与C相互调用的首要问题是如何交换数据,lua API使用了一个抽象的栈与…
今天安装了luasocket,遇到了很多错误,百度并没有什么针对lua5.3的版本安装luasocket的文章,在这里记录一下. 1.下载lua5.3 下载到了lua-5.3.5.tar.gz版本的lua后,在centos中进行解压,然后make linux && make install 使用which lua,查看lua是否安装成功.安装成功会得到以下结果: 在命令行下输入:lua 如上图则lua5.3版本安装成功. 2.下载luasocket: linux中需要安装git,命令如下:…
Lua是一个嵌入式的语言,意味着Lua不仅可以是一个独立运行的程序包也可以是一个用来嵌入其他应用的程序库. Lua可以作为程序库用来扩展应用的功能,也就是Lua可以作为扩展性语言的原因所在.同时,Lua程序中可以注册有其他语言实现的函数,这些函数可能由C语言(或其他语言)实现,可以增加一些不容易由Lua实现的功能.这使得Lua是可扩展的.与上面两种观点(Lua作为扩展性语言和可扩展的语言)对应的C和Lua中间有两种交互方式.第一种,C作为应用程序语言,Lua作为一个库使用:第二种,反过来,Lua…
首先说一下5.3貌似没有这个问题, 可是眼下最新版的luasocket 3.0 rc1仅仅能支持5.2, 5.3调用的话程序会崩溃(不知道是不是我没配置好) 出现这个问题的解决办法, 想必网上有非常多资料了, 就是C model的静态和动态链接的问题, lua5.2不支持 >= 2的静态链接, 而假设在编译得到lua.lib的时候用了静态链接,  编译得到socket.dll 和 mime.dll的时候链接了它, 那么在命令行解释的时候, 相当于链接了两次, 就会出现这种错误. 非常可惜, 如今…
lua中调用C++函数 我们产品中提供了很多lua-C API给用户在lua中调用,之前一直没用深究其实现原理,只是根据已有的代码在编码.显然这不是一个好的习惯,没用达到知其所以然的目的. 一.基本原理 将C++函数编译成动态链接库,然后在lua中require,通过下面的示例进行详解. #ifdef __cplusplus extern "C" { #endif #include<lua.h> #include<lualib.h> #include<la…