|
win32/64的编译
2. 解决编译报错的问题,安装VS2017同时勾选“使用C++的桌面开发”(勾选CMake相关选项)、“使用windows平台开发”(勾选C++相关选项)、“Visual Studio扩展开发”(注意只能是版本2017,我这里尝试2019的版本发现无法解决编译报错的问题),详情请看:
CMake Error at CMakeLists.txt:3 (project):
Generator
Visual Studio 15 2017
could not find any instance of Visual Studio.
Configuring incomplete, errors occurred!3. 执行build/make_win64_lua53.bat,如果成功生成build\plugin_lua53\Plugins\x86_64\xlua.dll文件则说明编译正常;
Android的编译(Windows平台下)
先下载Windows平台的Android Studio并安装,同时在后续安装步骤中安装好Android SDK:
2. 打开Android SDK Manager,安装CMake 3.6 的版本:
3. 下载Android NDK,版本“修订版 10e(2015 年 5 月)”,并解压到任意位置:
4. 在环境变量中,新建“ANDROID_SDK”和“ANDROID_NDK”两个变量,并配置好路径:
5. 执行build/make_android_lua53.bat,如果成功生成build\plugin_lua53\Plugins\Android\Libs\相关文件则说明编译正常;
添加rapidjson扩展
2. 在xlua下的build文件夹下新建名为“lua-rapidjson”文件夹;
3. 在“lua-rapidjson”下新建“include”和“source”文件夹;
4. 将lua-rapidjson项目的“rapidjson\include”文件夹下的所有文件拷贝到xlua项目的“build\lua-rapidjson\include”文件夹下;
5. 将lua-rapidjson项目的“src”文件夹下的所有文件拷贝到xlua项目的“build\lua-rapidjson\source”文件夹下;
xlua项目下build\lua-rapodjson结构
6. 打开“build\CMakeLists.txt”文件,加入下面的脚本:
#begin lua-rapidjson
set (RAPIDJSON_SRC
lua-rapidjson/source/Document.cpp
lua-rapidjson/source/rapidjson.cpp
lua-rapidjson/source/Schema.cpp
lua-rapidjson/source/values.cpp
)
set_property(
SOURCE ${RAPIDJSON_SRC}
APPEND
PROPERTY COMPILE_DEFINITIONS
LUA_LIB
)
list(APPEND THIRDPART_INC lua-rapidjson/include)
set (THIRDPART_SRC ${THIRDPART_SRC} ${RAPIDJSON_SRC})
#end lua-rapidjson添加protobuf扩展
2. 在xlua下的build文件夹下新建名为“lua-protobuf”文件夹;
3. 将lua-protobuf项目下的所有文件拷贝到xlua项目下的“build\lua-protobuf”文件夹下;
xlua项目下build\lua-protobuf结构
4. 打开“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编译链接库
执行xlua项目build目录下的对应的库文件生成脚本即可生成对应的链接库;
所有编译脚本都是按这个方式命名:make_平台_lua版本.后缀。
比如windows 64位lua53版本是make_win64_lua53.bat,android的luajit版本是make_android_luajit.sh,要编译哪个版本就执行相应的脚本即可。
执行完编译脚本会自动拷贝到plugin_lua53或者plugin_luajit目录,前者是lua53版本放置路径,后者是luajit。
配套的android脚本是在linux下使用的,脚本开头的NDK路径要根据实际情况修改。 项目中使用新增的库
2. 打开项目中的LuaDLL.cs文件,加入下面的代码:
[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);
}
[DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
public static extern int luaopen_pb(System.IntPtr L);
[MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))]
public static int LoadPb(System.IntPtr L)
{
return luaopen_pb(L);
}
3. 打开LuaEnv.cs文件,加入下面的代码:
AddBuildin("rapidjson", LuaDLL.Lua.LoadRapidJson);
AddBuildin("pb", LuaDLL.Lua.LoadPb);
4. 编写rapidjson测试代码:
local rapidjson = require('rapidjson')
local t = rapidjson.decode('{"a":123}')
print(t.a)
t.a = 456
local s = rapidjson.encode(t)
print('json', s)5. 编写protobuf测试代码:
local pb = require "pb"
assert(pb.loadfile "login.pb")
local loginCS = {
username="jack",
password="123456"
}
local bytes = assert(pb.encode("login.req_login", loginCS))
print(pb.tohex(bytes))
local recvData = assert(pb.decode("login.req_login", bytes))
print(recvData .username) |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|