博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++嵌入Lua读取配置文件
阅读量:5294 次
发布时间:2019-06-14

本文共 1506 字,大约阅读时间需要 5 分钟。

这段时间一直在写工具,遇到一些问题,Google下解决了,这里想把解决问题的成果提取出来分享下,也方便我以后使用,^_^

写工具就应该尽量的灵活,可配置性强,配置文件是少不了的。
之前用过自定义配置文件(我的另一篇文章中提到过:),灵活是灵活,可写起来有点麻烦,而且如果想把部分逻辑写在外面,在配置文件中弄个函数就很不随意了——自己要写个脚本引擎进行解析……
最后决定用lua作为配置文件的解析器,这里有个简单的demo:

1 /*  2 File      : demo.cpp  3 Author    : Mike  4 E-Mail    : Mike_Zhang@live.com  5 */  6 #include 
7 extern "C" 8 {
9 #include "lua.h" 10 #include "lualib.h" 11 #include "lauxlib.h" 12 } 13 14 lua_State *L; 15 const char *lua_Script = "function add(a, b) return (a+b) end "; 16 17 int lua_add(lua_State *L, const char *fun_name, int x, int y) 18 {
19 int ret; 20 lua_getglobal(L, fun_name); 21 lua_pushnumber(L, x); 22 lua_pushnumber(L, y); 23 lua_call(L, 2, 1); 24 ret = (int)lua_tointeger(L, -1); 25 lua_pop(L, 1); 26 return ret; 27 } 28 29 int test() 30 {
31 int ret = 0; 32 lua_State *L = lua_open(); /* opens Lua */ 33 luaL_openlibs(L); 34 if (luaL_dostring(L, lua_Script)) // Run lua script 35 {
36 printf("error!\n"); 37 lua_close(L); 38 return -1; 39 } 40 ret = lua_add(L, "add", 4, 5); 41 printf("%d\n",ret); 42 lua_close(L); 43 return 0; 44 } 45 46 int main() 47 {
48 test(); 49 return 0; 50 }

另外,我自己写了个C++调用Lua的类,感兴趣的话,可以到这里去找:

项目地址:
svn访问:svn checkout http://svn.code.sf.net/p/cppcalllua/code-0/trunk cppcalllua-code-0
Tips : 这是一个CodeBlocks的工程,工程文件 : CppCallLua.cbp

 

 

转载于:https://www.cnblogs.com/MikeZhang/archive/2011/12/28/cppCallLua.html

你可能感兴趣的文章
第二周
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
plsql使用,为什么可以能看见其他用户的表
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
Scripting Java #3:Groovy与invokedynamic
查看>>
2014-04-21-阿里巴巴暑期实习-后台研发-二面经验
查看>>
数据结构中线性表的基本操作-合并两个线性表-依照元素升序排列
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Min Stack
查看>>
从LazyPhp说起
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>
objective-c overview(二)
查看>>
python查询mangodb
查看>>
软件测试(基础理论一)摘
查看>>
consonant combination
查看>>
基于Flutter实现的仿开眼视频App
查看>>
析构器
查看>>
驱动的本质
查看>>