Lua5.3 与C交互学习(一)

本文详细介绍了如何在C++中搭建lua环境,包括静态库的生成与使用,以及C++如何调用Lua函数和Lua调用C++函数的方法。同时,讲解了在不同文件间共享全局变量、在Lua中引入C模块以及C++向lua注册函数和模块的技巧。适合对lua与C++交互感兴趣的开发者阅读。
摘要由CSDN通过智能技术生成

C++中引入lua环境搭建

  • 第一种: 联合的方式(不方便)
    1. 下载lua5.3.1 tar.gz
    2. 创建控制台项目, 静态库, 取消预编译头;
    3. C/C++>常规>附加包含目录: 加入5.3.1\src
    4. 编译得到lublib.lib
    5. 创建新工程
    6. 在vc++目录里添加包含目录 和库目录;
    7. 连接器里添加lualib.lib
    8. 编译; 如果失败则拷贝lualib.lib到根目录dubug下;
    9. OK
  • 第二中: 生成静态库
    1. 新建控制台项目, 静态库, 取消预编译头;
    2. 将5.3.2的src中添加到项目中, 但 不要添加lua.c
    3. 编译得到xxx.lib, 这就是所得到的静态库
    4. 建立一个文件夹如lua5.3,分别在子文件夹lib里放入刚生成的xxx.lib(可以改名为lua5.3.2.lib)和include子文件夹里放入lua头文件: lauxlib.h, lua.h, luaconf.h, lualib.h
    5. 新建C++项目, 在”项目属性>VC++目录>包含目录和库目录里”添加上面的lib和include路径;
    6. “项目属性>连接器>输入”里添加lua5.3.2.lib
    7. OK
#include <stdio.h>
#include <string.h>

extern "C"
{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
}
int main(int argc, char* argv[])
{
    lua_State *L = luaL_newstate();
    luaL_openlibs(L);  // 加载Lua通用扩展库

    if(luaL_loadfile(L,"test.lua"||lua_pcall(L,0,0,0))  //或luaL_dofile(L,"test.lua")
        printf("error pcall!: %s\n",lua_tostring(L,-1));
    // 前面搭建了运行环境,lua代码写在了test.lua文件中
    // ......
    //
    lua_close(L);
    return 0;
}       

C++调用Lua函数

要在C++中调用lua函数,则有如下函数可以利用:
lua_getglobal()就是从lua中取得函数,压入栈中;随后压入函数的参数;

如在test.lua中有如下代码:

function he(x,y)
    return x*y
end

则的C++中的调用过程是:

//.....
lua_getgloabl(L,"he");
lua_pushnumber(L,5);
lua_pushnumber(L,6);
// run the lua program
//
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值