# XLua WinForm桌面环境部署与运行说明本次完成了原生XLua在VS2022 WinForm桌面程序的完整部署与功能验证,全程解决编译、库加载、类型兼容三类核心问题。首先通过CMake编译

XLua WinForm 桌面环境部署与运行说明

一、项目概述

本项目基于原生 XLua 源码,在 VS2022 Windows Forms 桌面框架下完成完整适配,剥离 Unity 引擎依赖,解决原生库编译、动态库加载、跨类型转换三类核心兼容问题,可支撑工控场景下 Lua 代码编辑器、断点单步调试、C# 与 Lua 双向互调等完整业务功能,项目开源地址:https://github.com/wenqizhiqq/xLuaTest.git

二、环境适配与问题解决

  1. 原生 C++ 动态库编译部署 通过 CMake 编译产出 64 位底层库,将编译产物xlua_x64.dll重命名为xlua.dll,配置文件自动复制至程序输出目录,同步将项目运行平台切换为 x64 架构,彻底解决运行时 “无法加载 xlua、找不到指定模块” 的 DLL 缺失异常。

  2. XLua C# 源码去 Unity 剥离处理 提取 XLua 运行时核心RuntimeGen源码,批量删除MonoTypeUnityEngineUnityEditor等 Unity 专属类型与预编译分支代码,消除标准.NET Framework 桌面环境不存在引擎类型导致的反射异常。

三、功能验证与代码优化

编写测试用例校验虚拟机运行能力:将 Lua 脚本以 UTF-8 编码转为二进制字节数组,调用DoString(byte[])重载接口执行代码;针对 Lua 整型默认映射 C# long、强制转换double报错问题,采用Convert.ToDouble()实现安全类型转换,成功读取脚本多返回值,弹窗输出运算结果,验证虚拟机加载、脚本执行链路完全通畅。

内存层面使用using语法包裹LuaEnv实例,程序退出作用域时自动释放 Lua 虚拟机资源,规避频繁创建虚拟机引发的内存泄漏问题。整套适配流程验证,剥离 Unity 后的原生 XLua 可稳定在 WinForm 桌面程序运行,满足工控 Lua 编辑器全套开发需求。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using XLua;

namespace WindowsFormsApp1
{
        // 必须加Hotfix,[CSharpCallLua]委托才能生效
        [Hotfix]
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            TestByteChunk();
        }
        void TestByteChunk()
        {
            // using 自动释放LuaEnv,杜绝内存泄漏
              LuaEnv env = new LuaEnv();
            string luaCode = @"
local a = 10
local b = 20
return a + b, a - b
";
            byte[] luaBytes = System.Text.Encoding.UTF8.GetBytes(luaCode);
            object[] ret = env.DoString(luaBytes, "TestByteScript");

            // 安全转换:先转long,再转double,兼容整数/浮点数
            double sum = Convert.ToDouble(ret[0]);
            double diff = Convert.ToDouble(ret[1]);

            MessageBox.Show($"和={sum}, 差={diff}");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值