准备工作去Lua官网下载最新的Release版本,当然也可以根据具体需要下载特定的版本 。然后执行命令(这里下载的安装包是lua-5.2.3.tar.gz):$tar zxf lua-5.2.3.tar.gz$cd lua-5.2.3/$sudo make install这里需要注意的在Lua的Makefile中默认的安装路径是/usr/local,如需要修改可自行指定。另外Lua5.2参考手册也是参考必须的Lua与C交互,准备牛刀我们首先得创建Lua在C中使用的环境,利用lua_State *luaL_newstate (void);Creates a new Lua...
定义C++类首先,我们定义一个Student类,它拥有名字(字符串类型)和年龄(整型),并且提供一些getter和setter,最后还提供了一个print方法.这里有Student类的定义和实现:Student.h和Student.cppStudent.h//// Student.h// MyCppGame//// Created by guanghui on 8/11/14.////#ifndef __MyCppGame__Student__#define __MyCppGame__Student__#include <iostream>#in...
前言当我们需要在Lua里面调用C/C++函数时,所有的函数都必须满足以下函数签名:typedef int (lua_CFunction) (lua_State L);换句话说,所有的函数必须接收一个lua_State作为参数,同时返回一个整数值。因为这个函数使用Lua栈作为参数,所以它可以从栈里面读取任意数量和任意类型的参数。而这个函数的返回值则表示函数返回时有多少返回值被压入Lua栈。(因为Lua的函数是可以返回多个值的)示例一定义C++函数指针int average(lua_State *L){ // get number of arguments int ...
理解Lua栈Lua通过一个“虚拟栈”与C/C++程序进行数据交互,所有的Lua C API都是通过操作这个栈来完成相应的数据通信。Lua的这个“虚拟栈”解决了C/C++程序与Lua程序通信的两大问题:Lua使用垃圾回收,而C/C++需要手动管理内存。Lua使用动态类型,而C/C++使用的是静态类型。因为这个栈在Lua虚拟机内部,当一个Lua的变量放在栈里面的时候,虚拟机可以知道它有没有被宿主程序所使用,从而决定是否采用GC。另外Lua采用结构体封装了类似“Lua_Value”的类型,让它可以存储任何C的类型。从而在数据交换的时候,任何类型都可以被放入栈的一个slot中。由于栈是FI...
Mac项目集成Lua准备工作首先,新建一个控制台应用程序。 打开Xcode,New->Project->OSX->Command Line Tool,取名为Lesson01接下来,我们需要下载lua5.2.3.,下载完后,解压缩,然后cd到刚刚解压缩的路径下面,输入make macosx,这样便可以生成Mac下面的lib文件。接下来把刚刚解压缩的文件夹拷贝到你新建的工程下面,然后设置include路径和library路径。(注意,这里是不需要把头文件添加到Xcode里面的,只要指定include路径,编译的时候,编译器会自动去找的。)因为我的Lua文件夹的路径是:xxxx/Lesso...