lua
一尺丈量
春风写意,万物屠苏。
展开
-
C++结合lua:LuaBridge让这一切变得更简单(包括变量和函数)
为什么使用Lua?C++和脚本结合使用是非常好的实践,这种用法提供了非常大的灵活度和自由空间。脚本文件能够作配置文件和编写复杂的函数。更重要的一点是,修改脚本文件后无需重新编译,它能够帮助你集中精力和避免精力分散。你甚至可以设计这样的一个系统,在不修改源码的情况下,其他人根本不知道怎么去添加一个新的脚本或者修改现有对象的功能。如果你想知道更多Lua为什么这么棒的原因,可以去阅读这篇文章:《...翻译 2019-12-04 13:29:46 · 6547 阅读 · 5 评论 -
C++ 程序嵌 Lua(基于 LuaBridge)
配置文件搞不定的,就得依赖脚本。C++ 程序想嵌点脚本,Lua几乎是首选。Lua 的源码自带Makefile,可以编译出静态库、解释器、编译器三个目标文件,作为宿主的 C++ 程序,除了要包含 Lua 头文件,还应该链接这个静态库。如果 C++ 程序是由CMake来构建的,那么用 CMake 为 Lua 创建一个静态库,也不是什么难事。CMake 很好的解决了跨平台的问题。其实...转载 2019-12-04 10:53:04 · 1008 阅读 · 1 评论 -
lua与C交互(7):C函数管理
(1)将要调用的函数封装成一个模块例如我们要用C封装一个数学模块给lua调用,lua中调用的代码为sum = mymath.add(1, 3)sub = mymath.sub(4, 2)print(sum, sub)CC代码为:#include <stdio.h>#include <stdlib.h>#include <string.h&g...原创 2019-06-12 14:38:10 · 395 阅读 · 0 评论 -
lua与C交互(1):简单栈操作
下面的代码是用来打印lua栈数据的简单版本:#include <stdio.h>#include <stdlib.h>#include <string.h>#include "lua.hpp"#include "lauxlib.h"#include "lualib.h"static void stackDump(lua_State* L)...原创 2019-06-11 15:03:19 · 446 阅读 · 0 评论 -
lua与C交互(2):获取lua文件中全局变量的值
cc代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include "lua.hpp"#include "lauxlib.h"#include "lualib.h"static void stackDump(lua_S...原创 2019-06-11 22:14:50 · 1261 阅读 · 0 评论 -
lua与C交互(3):与lua表的简单交互
C读取lua表中字段的值。lua代码:print("print from test lua.")name = "linxing"age = 19list = {}list.width = 190list.height = 540list.title = "rectangle"CC代码:#include <stdio.h>#include <st...原创 2019-06-11 22:45:13 · 396 阅读 · 0 评论 -
lua与C交互(4):C调用lua函数
C调用lua中的函数有几种情况:(1)lua函数无参数无返回(2)lua函数有参数无返回(3)lua函数有参数有返回(包含返回多个参数)(4)lua函数在lua表中C中调用lua函数有一个主要的宏:lua_pcall(L,n,r,f),n为lua函数的参数个数,r为lua函数的返回值个数,f暂时不用理会。完整的代码如下:lua代码:print("print f...原创 2019-06-11 23:12:22 · 1213 阅读 · 0 评论 -
lua与C交互(5):lua调用C变量
lua代码:print("print from demo lua.")-- 访问全局变量print("name", name)print("age", age)print("no", no)print("room", room)-- 访问全局表print("t.len", t.len)print("t.rock", t.rock)print("b.beauty", b....原创 2019-06-12 10:27:56 · 1222 阅读 · 0 评论 -
lua与C交互(6):lua调用C函数
lua要调用的C函数有一个一致的签名:typedef int (*lua_CFunction) (lua_State *L);函数的返回值表示函数的返回值个数,lua与C通过lua虚拟机中的栈来传递参数和返回参数。即C中的函数应该定义为:int testfunc(lua_State* L){ printf("testfunc from C"); return 0;}...原创 2019-06-12 13:27:10 · 619 阅读 · 0 评论