C++ & lua 自动化引擎 dmlua

码农软件 · 软件分类 · 常用工具包 · 2019-08-13 06:13:38

软件介绍

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等.

本文地址:https://codercto.com/soft/d/12245.html

裂变式创业

裂变式创业

宗毅、小泽 / 机械工业出版社 / 2016-1-1 / 39.84

互联网大潮汹涌来袭,传统企业增长乏力,互联网公司跨界冲击,转型之路迫在眉睫。“转型找死,不转型等死”这一坊间传说让多数企业徘徊不前,不少实体经济面临困境,敢问路在何方? 宗毅独创裂变式创业,用人民币投票选总经理,规定自己不投钱不能参与竞选;不相信干股,不使用职业经理人,用金融的方式管理现金流。用商业模式颠覆传统公益,打通南北充电之路;摇身一变成为自媒体,用产品建立社群。自己写故事,自己当导演......一起来看看 《裂变式创业》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器