大體流程一致,可是他的github上的版本,沒有Windows的版本。打開他的win的工程會提示缺乏一個模塊。
本人環境python
cocos的下載地址,下載的穩定版
Cocos2d-x stable versions
http://www.cocos2d-x.org/downloadgit
安裝python,必定要是python2.x的
設置好環境變量就行
CMD-》python -V 查看確認版本
2.7.Xgithub
而後運行Cocos2dx3.17裏面的setup.py開工。。
由於我只在WIN下跑,因此enter就行。這些ndk、sdk、ant都是要下載的統統不用設置路徑。socket
@echo off set /p projectName=please input project name: set /p packageName=please input package name: @echo cocos new %projectName% -p %packageName% -l lua -d C:\demo1 cocos new %projectName% -p %packageName% -l lua -d C:\demo1 @echo Create Success!!!
首先, 添加framework/cocos2d-x/external/lua/文件夾下lua
/bitop /lpack /lpeg /sproto.net
而後在lua_extension.c中添加些,東西,我直接把整個文件貼來了code
#include "scripting/lua-bindings/manual/network/lua_extensions.h" #if __cplusplus extern "C" { #endif // socket #include "luasocket/luasocket.h" #include "luasocket/luasocket_scripts.h" #include "luasocket/mime.h" // srpotol #include "sproto/lsproto.h" #if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) #include "bitop/bit.h" #endif #include "lpeg/lpeg.h" #include "lpack/lpack.h" static luaL_Reg luax_exts[] = { {"socket.core", luaopen_socket_core}, {"mime.core", luaopen_mime_core}, //add { "sproto.core", luaopen_sproto_core }, #if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) { "bit", luaopen_bit }, #endif { "lpeg", luaopen_lpeg }, { "string", luaopen_pack }, //add end {NULL, NULL} }; void luaopen_lua_extensions(lua_State *L) { // load extensions luaL_Reg* lib = luax_exts; lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); for (; lib->func; lib++) { lua_pushcfunction(L, lib->func); lua_setfield(L, -2, lib->name); } lua_pop(L, 2); luaopen_luasocket_scripts(L); } #if __cplusplus } // extern "C" #endif
VS中在libluacocos2d目錄裏面創建對應的連接器(文件夾),把他們包含進來,
/bitop /lpack /lpeg /sproto 這4個。blog
開始編譯。。。。麻吉報錯ip
錯誤(活動) 未定義標識符 "luaL_reg" libluacocos2dget
真香分析後,發現這東西明明就在對應的luajit文件夾下面的頭文件裏面,
通過一番掙扎,我發現。。我只是把這個類型的定義複製過來,編譯一次,他提示不能重複定義,再註釋就PASS了。
//typedef struct luaL_Reg { // const char *name; // lua_CFunction func; //} luaL_Reg; static const luaL_Reg R[] = { { "pack", l_pack }, { "unpack", l_unpack }, { NULL, NULL } };
LNK2019 沒法解析的外部符號 _luaL_setfuncs
真香分析後發現,這個是5.2的API,在lsprotol.c中,將
這麼一改就行。。。原本就是要用LUAJIT的。
//#ifndef luaL_newlib /* using LuaJIT */ #ifdef luaL_newlib /* using LuaJIT */
理論上來5.1的lua就支持5.2的一些用法了。
理論上就OK了。收工。
參考 https://blog.csdn.net/qq_34497362/article/details/81780342 https://blog.csdn.net/lvyan1994/article/details/83578326