dmluaC++ & lua 自动化引擎
dmlua是一个集合tolua(修改了部分源码) 使用lua5.3版本的 C++ & lua 自动化引擎.
1. project tolua 是 tolua,lua的库 使用的是lua 5.3版本
2. project tolua++ 是tolua的工具源码 通过.pkg文件生成源码文件
3. project dmluatest 是使用tolua+dmlua的例子
4. project dmlua 因为都是头文件 所以没有project 是针对tolua使用的封装 他会自动搜索 当前执行程序目录上一级 所有的.lua文件(比如程序在 /home/user/debug/dmluatest.exe 那么他会搜索/home/user/目录 有需求可以自己修改__GetScriptPath)
注意:
1. interface.pkg 里面 $#include "dmlua_typeid.h" 需要存在.
2. 需要在脚本里面new或者gc的struct或class 需要把构造和析构都显式的导出
3. 如何导出一个类的部分接口
class sample {// tolua_export public: // tolua_begin int GetID(){ return 0;} }; // tolua_end
4. 如何调用接口
CDMLuaEngine oDMLuaEngine; if (!oDMLuaEngine.ReloadScript()){ return;} CRole *poRole = CRoleMgr::Instance()->CreateRole(); poRole->SetName("andy");poRole->SetHp(1);poRole->SetMp(1); unsigned int dwTaskID = 100; LResultINT oResult(-1); // script.task.task.AcceptTask// script 目录// task 目录// task 脚本名// AcceptTask 函数名 // 注意事项 // 对象需要传递指针类型, 如果直接使用对象 会产生copy // 只有传递指针类型的对象 才能返回出来. // 例如 oDMLuaEngine.Call("script.task.task.AcceptTask", poRole, dwTaskID, &oResult); //oResult可以返回出来 oDMLuaEngine.Call("script.task.task.AcceptTask", poRole, dwTaskID, oResult); //oResult无法返回出来
5. 性能 常规配置下 C++ call lua接口 性能大约是 200万/秒, 经过测试发现瓶颈全部在lua提供的api上面. 说明难以再优化了. 如果还有性能需求 可以试试luajit等.
评论
Stackstorm自动化引擎
StackStorm(又名"IFTTTforOps")是一个跨服务和工具的集成和自动化平台。它把你现有的基础设施和应用环境联系在一起,这样你就可以更容易地实现环境的自动化--特别注重对事件的响应行动。
Stackstorm自动化引擎
0
LOVR基于 Lua 的虚拟现实引擎
LÖVR是一个简单的Lua框架,用于快速构建VR体验,而无需太多设置或编程经验。该框架小巧、快速、开源,并支持许多不同的平台和设备。 特征跨平台:在Windows、Mac、Linux、Android
LOVR基于 Lua 的虚拟现实引擎
0
Node-Lua基于Lua实现的脚本和服务器引擎
Node-Lua是一款基于Lua实现的脚本和服务器引擎,它支持构建海量Lua服务(Context_Lua)并以多线程方式运行在多核服务器上,采用了任务多路复用的设计方案,有效利用了多核优势。node-
Node-Lua基于Lua实现的脚本和服务器引擎
0