COCOS2DX 4.X 加入CJSON 庫LUA

剛剛調(diào)通在COCOS2DX 4.x 加入 CJSON 到LUA中使用 ,android編譯老是提示錯(cuò)誤 multiple definition of luaL_setfuncs 。

注意Cocos2dx 4.x需要安裝 CMake 3.1X
環(huán)境
lua 5.3
windows 10
vs 2015
cocos2dx 4.0
Cmake 3.16

1、修改 frameworks\cocos2d-x\external\lua\cjson\lua_cjson.c 文件行數(shù)1323 ,注釋 lua_State 函數(shù) 。

2、添加 frameworks\cocos2d-x\external\lua\cjson\CMakeLists.txt 文件

cmake_minimum_required(VERSION 3.6)

set(lib_name cjson)
set(target_name ext_${lib_name})

project(${lib_name})

set(${target_name}_src
  fpconv.c
  lua_cjson.c
  strbuf.c
)

add_library(${target_name} STATIC
  ${${target_name}_src}
)

target_include_directories(${target_name} PRIVATE ../luajit/include)
target_include_directories(${target_name} PUBLIC .)

set_target_properties(${target_name}
    PROPERTIES
    ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
    FOLDER "External"
)

3、修改 frameworks\cocos2d-x\external\CMakeLists.txt 文件 行數(shù)106

# use lua/js specific libs by property to prevent conflict
if(BUILD_LUA_LIBS)
    add_subdirectory(lua/luajit)
    add_subdirectory(lua/tolua)
    add_subdirectory(lua/cjson)
    add_subdirectory(lua/luasocket)
    set_property(TARGET external APPEND PROPERTY 
        CC_LUA_DEPEND ext_luajit ext_tolua ext_cjson ext_luasocket
    )
endif()

4、修改 frameworks\cocos2d-x\cocos\scripting\lua-bindings\manual\network\lua_extensions.c 文件

#include "lua/cjson/lua_cjson.h"
static luaL_Reg luax_exts[] = {
    {"socket.core", luaopen_socket_core},
    {"mime.core", luaopen_mime_core},
    {"cjson", luaopen_cjson_safe }, 
    {NULL, NULL}
};

5、啟動(dòng)win32 模擬器 cocos compile -p win32

6、啟動(dòng)android APK cocos compile -p android
出現(xiàn) “BUILD SUCCESSFUL” 編譯成功

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容