cocos2dx 3.17(Windows下) 接入skynet和sprotol

cocos2dx 3.17(Windows下) 接入skynet和sprotol,第1张

概述大致流程一致,但是他的github上的版本,没有Windows的版本。打开他的win的工程会提示缺少一个模块。 本人环境 cocos2dx 3.17.1 当前最新 skynet-无视-当前最新 VS2015(机器上同时装了多个VS) WIN7 PYTHON 2.7.9 cocos的下载地址,下载的稳定版 Cocos2d-x stable versions http://www.cocos2d-x.

大致流程一致,但是他的github上的版本,没有windows的版本。打开他的win的工程会提示缺少一个模块。
本人环境

cocos2dx 3.17.1 当前最新 skynet-无视-当前最新 VS2015(机器上同时装了多个VS) WIN7 PYTHON 2.7.9

cocos的下载地址,下载的稳定版
Cocos2d-x stable versions
http://www.cocos2d-x.org/download

安装python,一定要是python2.x的
设置好环境变量就行
CMD-》python -V 查看确认版本
2.7.X

然后运行Cocos2dx3.17里面的setup.py开工。。
因为我只在WIN下跑,所以enter就行。这些ndk、sdk、ant都是要下载的通通不用设置路径。

环境配置好后重启一波就能创建工程了
我找的一个脚本
@echo offset /p projectname=please input project name:set /p packagename=please input package name:@echo cocos new %projectname% -p %packagename% -l lua -d C:\demo1cocos new %projectname% -p %packagename% -l lua -d C:\demo1@echo Create Success!!!
再然后就是进目录打开VS工程。 巨坑马上就来了。

首先, 添加framework/cocos2d-x/external/lua/文件夹下

/bitop /lpack /lpeg /sproto

然后在lua_extension.c中添加些,东西,我直接把整个文件贴来了

#include "scripting/lua-bindings/manual/network/lua_extensions.h"#if __cplusplusextern "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个。

开始编译。。。。麻吉报错

错误(活动) 未定义标识符 "luaL_reg" libluacocos2d

真香分析后,发现这东西明明就在对应的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的一些用法了。

把他的SRC复制过来 你的里面就能在window里面跑了。
https://github.com/Zhaotop/CCSkynet/tree/master/TestSproto

理论上就OK了。收工。

参考 https://blog.csdn.net/qq_34497362/article/details/81780342 https://blog.csdn.net/lvyan1994/article/details/83578326

总结

以上是内存溢出为你收集整理的cocos2dx 3.17(Windows下) 接入skynet和sprotol全部内容,希望文章能够帮你解决cocos2dx 3.17(Windows下) 接入skynet和sprotol所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1000002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存