xlua - 使用clion给xlua增加lua-rapidjson库
1, 把头文件放在lua-rapidjson/include下,源码文件放在lua-rapidjson/source下,然后再CMakeList.txt中添加下图所示的内容
2, 加载CMakeList.txt可能会遇到下面的错误
原因是:需要使用vs作为编译器,而不是gnu的编译器
把Visual Studio移到第1个,设为默认(这边针对64位架构,所以选的是针对64位的编译工具)
3, 然后Build项目就行了
4, 新生成的xlua.dll替换Unity中的(如果Unity已打开,需要重启下,才能加载新的dll)
5, 测试是否成功
新建MyLua.cs,用于放dll加载代码
using System.Runtime.InteropServices; namespace XLua.LuaDLL { public partial class Lua { [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)] public static extern int luaopen_rapidjson(System.IntPtr L); [MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))] public static int LoadRapidJson(System.IntPtr L) { return luaopen_rapidjson(L); } } }
新建lua脚本,Lua/Test8.lua.txt
local rapidjson = require('rapidjson') local t = rapidjson.decode('{"a":123}') print(t.a) t.a = 456 local s = rapidjson.encode(t) print('json', s)
新建测试脚本Test8.cs
using System.Text; using UnityEditor; using UnityEngine; using XLua; public class Test8 : MonoBehaviour { private LuaEnv m_LuaEnv; void Start() { m_LuaEnv = new LuaEnv(); m_LuaEnv.AddLoader((ref string filePath) => { filePath = filePath.Replace('.', '/'); filePath = $"Assets/{filePath}.lua.txt"; var txtAsset = AssetDatabase.LoadAssetAtPath<TextAsset>(filePath); return Encoding.UTF8.GetBytes(txtAsset.text); }); m_LuaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson); m_LuaEnv.DoString("require('Lua.Test8')"); } void OnDestroy() { if (null != m_LuaEnv) m_LuaEnv.Dispose(); } }
6, 运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端