cocos2dx+连接mysql_cocos2dx 3.17(Windows下) 接入skynet和sprotol

大致流程一致,但是他的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 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!!!

再然后就是进目录打开VS工程。

巨坑马上就来了。

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

/bitop /lpack /lpeg /sproto

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

#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个。

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

错误(活动) 未定义标识符 "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的一些用法了。

理论上就OK了。收工。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值