【Window】Xlua 添加第三方库

  • 要准备的工具
    • cmake 3的版本 
    • vs2017 15版本或更高
  • 下载xLua 源代码 https://github.com/Tencent/xLua.git
    • 其中的build文件夹解压至Unity项目的根目录下
  • 下载第三方库的源码 解压至build文件夹
  • 修改build里面的CMakeLists.txt
    • mark_as_advanced下面添加扩展
#begin lua-xxx
set (XXX_SRC xxx/xxxx.c)
set_property(
SOURCE ${XXX_SRC}
APPEND
PROPERTY COMPILE_DEFINITIONS
LUA_LIB
)
set (THIRDPART_SRC ${THIRDPART_SRC} ${XXX_SRC})
#end lua-xxx

这里的xxx为Lua包名

以lfs:luafilesystem为例

#begin lua-lfs
set (LFS_SRC luafilesystem/src/lfs.c)
set_property(
SOURCE ${LFS_SRC}
APPEND
PROPERTY COMPILE_DEFINITIONS
LUA_LIB
)
set (THIRDPART_SRC ${THIRDPART_SRC} ${LFS_SRC})
#end lua-lfs
  • 安装VS2017 15版本进行编译处理或者修改bat内容
    • Downloads - Visual Studio Subscriptions Portal 安装comunity版本
    • 或者修改bat内容 改为当前拥有的 vs版本
      • 把make_win64_lua53.bat文件里面的 cmake -G “Visual Studio 14 2015 Win64” .. 这一行修改成 cmake -G “Visual Studio 11 2012 Win64”
  • 确保已安装了CMake Download | CMake
  • 根据平台和lua的版本进行make安装
  • make_win64_lua53.bat双击编译安装
  • 打开plugin_lua53/Plugins/x86_64/xlua.dll覆盖掉项目Assets/Plugins/x86_64/xlua.dll
  • 编译完成后
  • 在xlua下找到LuaDLL.cs
  • #if UNITY_IPHONE && !UNITY_EDITOR
        const string LUADLL = "__Internal";
    #else
        const string LUADLL = "xlua";
    #endif

    在上面代码下添加引进新的模块

  • [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    public static extern int luaopen_模块名(System.IntPtr L);
     
    [MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))]
    public static int Load模块名(System.IntPtr L)
    {
        return luaopen_模块名(L);
    }

     例子 lfs

    [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    public static extern int luaopen_lfs(System.IntPtr L);
    
    [MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))]
    public static int LoadLfs(System.IntPtr L)
    {
        return luaopen_lfs(L);
    }
  • 在LuaEnv.cs的文件下找到
    • AddBuildin(XXX,XXXX)
    • 添加 AddBuildin("引入包名", LuaDLL.Lua.Load模块名);
      • 引入包名:require "包名"

LuaEnv.cs: 

                AddBuildin("lfs", LuaDLL.Lua.LoadLfs);

  • 在Lua代码中即可使用
  • local a = require “包名”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿荣526

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值