xlua使用VS2019编译第三方库lua-protobuf
xlua github地址lua-protobuf github地址xlua官网编译第三方库教程xlua作者编译好第三方库的项目示例官网教程是讲了主要部分,没有环境搭建等步骤。之前用VS2017编译过xlua第三方库lua-protobuf,之后再编译一次,步骤有些忘了还是做个笔记。步骤一:1、下载xlua项目和lua-protobuf项目,将lua-protobuf放到xlua项目的xlua/b
xlua官网编译第三方库教程是讲了主要部分,没有环境搭建等具体步骤。
之前用VS2017编译过xlua第三方库lua-protobuf,之后再编译一次,步骤有些忘了还是做个笔记。
步骤一:
1、下载xlua项目和lua-protobuf项目,
将lua-protobuf放到xlua项目的xlua/build文件夹下:
2、打开xlua/build/CMakeLists.txt,如图加入
#begin lua-profobuf
set (LPB_SRC
lua-protobuf/pb.c
)
set_property(
SOURCE ${LPB_SRC}
APPEND
PROPERTY COMPILE_DEFINITIONS
LUA_LIB
)
list(APPEND THIRDPART_INC lua-protobuf)
set (THIRDPART_SRC ${THIRDPART_SRC} ${LPB_SRC})
#end lua-protobuf
举例编译win64_luajit
打开xlua/build/make_win64_luajit.bat,修改为:
@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
echo Swtich to x64 build env
cd %~dp0\luajit-2.1.0b3\src
call msvcbuild_mt.bat static
cd ..\..
mkdir build_lj64 & pushd build_lj64
cmake -DUSING_LUAJIT=ON -G "Visual Studio 16 2019" -A x64 ..
IF %ERRORLEVEL% NEQ 0 cmake -DUSING_LUAJIT=ON -G "Visual Studio 16 2019" -A x64 ..
popd
cmake --build build_lj64 --config Release
md plugin_luajit\Plugins\x86_64
copy /Y build_lj64\Release\xlua.dll plugin_luajit\Plugins\x86_64\xlua.dll
pause
步骤二:
VS2019 环境搭建:
1、点击开始->Visual Studio Installer
2、选中 更多/修改/单个组件
3、搜索Cmake,选中2个共组件。
4、选中Windows 10 SDK,选中其中1个版本组件。
5、点击修改。
Cmake下载:
cmake下载地址
1、解压后打开cmake/bin/cmake-gui.exe
2、选中文件夹
步骤三:
配置和搭建完成!
双击xlua/build/make_win64_luajit.bat
之后看到生成文件:
xlua/build/plugin_luajit/Plugins/x86_64/xlua.dll
将此文件替换xlua/Assets/Plugins/x86_64/xlua.dll。
注意:不生效的话需要重启Unity!!
步骤四:
1、将lua-protobuf项目里的protoc.lua复制到unity项目Resources文件夹下,并改名为:protoc.lua.txt。
2、
xlua项目新建代码文件:
BuildInInit.cs
namespace XLua.LuaDLL
{
using System.Runtime.InteropServices;
public partial class Lua
{
[DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
public static extern int luaopen_pb(System.IntPtr L);
[MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))]
public static int LoadLuaProfobuf(System.IntPtr L)
{
return luaopen_pb(L);
}
}
}
新建LuaProtobufTest.cs
using UnityEngine;
using XLua;
public class LuaProtobufTest : MonoBehaviour
{
void Start()
{
LuaEnv luaenv = new LuaEnv();
luaenv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);
luaenv.DoString(@"
------------------------------------
local pb = require 'pb'
local protoc = require 'protoc'
assert(protoc:load [[
message Phone {
optional string name = 1;
optional int64 phonenumber = 2;
}
message Person {
optional string name = 1;
optional int32 age = 2;
optional string address = 3;
repeated Phone contacts = 4;
} ]])
local data = {
name = 'ilse',
age = 18,
contacts = {
{ name = 'alice', phonenumber = 12312341234 },
{ name = 'bob', phonenumber = 45645674567 }
}
}
local bytes = assert(pb.encode('Person', data))
print(pb.tohex(bytes))
local data2 = assert(pb.decode('Person', bytes))
print(data2.name)
print(data2.age)
print(data2.address)
print(data2.contacts[1].name)
print(data2.contacts[1].phonenumber)
print(data2.contacts[2].name)
print(data2.contacts[2].phonenumber)
---------------------------------
"
);
luaenv.Dispose();
}
}
然后新建场景运行代码即可
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)