zoukankan      html  css  js  c++  java
  • Mac下编译libpomelo静态库,并在cocos2dx项目中引用

          最近在学习cocos2dx的过程中需要和服务器进行交互,所以这几天在学习libpomelo静态库的编译和使用。之前在windows系统下编译libpomelo,并在VS中引入比较顺利;但是,目前对Mac系统和XCode不是很熟悉,所以多花了些时间。不过,最终还是成功了,在这里就将我编译引入libpomelo静态库的过程记录下来,也分享给和我一样遇到问题的朋友们。

    准备工作

          libpomelo下载地址:https://github.com/NetEase/libpomelo或者http://pan.baidu.com/s/1B2o8Y,下载解压后目录结构为

          此时,我们需要通过gyp来生成工程文件并进行编译,从官网下载gyp速度非常慢,这是我从其他地方下载到的,分享给大家http://pan.baidu.com/s/1hqmn3N2,不能保证是最新版的,下载解压后得到

          下面开始安装gyp,大家看到setup.py应该知道这个python文件应该和安装有关,使用help命令查看相关信息,发现build和install命令可用于编译和安装

          下面进行编译

          安装时,由于存在权限问题,所以需要加上sudo命令来提升权限,同时需要输入密码

          gyp安装成功后,我们的准备工作就做好了。

    编译静态库

          在终端使用如下命令:    

      ./pomelo_gyp -DTO=ios
      ./build_ios
      ./build_iossim

          首先,进入刚刚下载的libpomelo目录,然后开始编译ios设备静态库

          编译静态库成功!

          接下来开始编译ios虚拟机的静态库

          这里出现了错误,是因为我的xcode中没有安装IOS6.1的虚拟机。点击xcode下的Preferences菜单项,切换到Downloads选项卡,如下,安装虚拟机

          这里我没有等待安装完成,直接切换到另一个已安装虚拟机的系统下,后面的“√”表示已安装

          现在重新编译,编译成功

          现在我们可以查看编译生成的静态库文件

          libpomelo->build下:

          libpomelo->deps->jansson->build下:

          libpomelo->deps->uv->build下:

          此时,静态库文件已经成功编译,共有6个.a文件。

    打包静态库文件

          在终端使用如下命令:

      lipo -create 文件1 文件2 -output 新文件

          我们可以把ios设备(arm)和ios虚拟机(i386)的静态库用lipo命令打包在一起,方便我们使用。

          输入上述命令后,在libpomelo目录下会生成3个打包后的.a文件

          此时,我们就可以在项目中使用这3个静态库了。

          接下来,将需要的静态库及相关头文件提取出来。将libpomelo->include文件夹、libpomelo->deps->jansson->src文件夹、libpomelo->deps->uv->include文件夹下的文件保留,另外将3个.a文件放于新建的目录lib中,最终的目录结构如下

    cocos2dx项目引入静态库

          将上面包含静态库和头文件的目录加入项目中,在XCode中右击项目,“Add Files to XXX”,选择上面的目录,然后添加

          此时在我们的项目中可以看到刚刚添加的目录

          然后,点击项目的Target,选择“Build  Phases”选项卡,找到“Link Binary With Libraries”

          点击“+”,点击“Add Other…”,选择3个静态库,点击Open按钮

          此时,静态库已加入到项目中

          现在,我们切换到“Build Settings”选项卡,找到“Search Paths”,在“Header Search Paths”和“Library Search Paths”中分别加入3项,分别是libpomelo中的include,deps->jansson->src和deps->uv->include的物理路径。

          然后,关闭XCode,重新打开项目,编译。此时在”jansson.h”中会报错

          我们将此处的尖括号改为引号,“hashtable.c”也做同样处理,再次编译,编译成功。

          现在我们就可以在项目中使用libpomelo库提供的服务了。

          首先,我们在AppDelegate.cpp中引入头文件#include “pomelo.h”,然后编译,此时在”map.h”中又有错误

          将其改为#include “ngx-queue.h”就可以了,再次编译,编译成功!

          这些头文件引用的问题相信大家都能搞定(可能你遇到的问题和我不一样,但应该都是小问题)。

    连接pomelo服务器

          我们在程序中加入如下代码:

          编译成功后,运行程序,控制台输出如下,此时由于没有服务器,所以连接失败。

          接下来,在VM虚拟机中打开pomelo服务器,将其激活。然后我们在MAC下的浏览器中输入ip和端口,查看服务器状态处于激活状态(我用的服务器代码在这里https://github.com/NetEase/chatofpomelo-websocket,当然代码中的ip和端口需要自己修改)

          再次运行我们的程序,控制台输出如下

          至此,我们已经成功编译了libpomelo静态库,将其引入项目,并测试连接pomelo服务器成功!

  • 相关阅读:
    Leetcode [654] 最大二叉树 &[105] 从前序与中序遍历序列构造二叉树 & [106] 从中序与后序遍历序列构造二叉树
    Leetcode [226] 翻转二叉树 & [116] 填充每个节点的下一个右侧节点指针 & [114] 二叉树展开为链表
    Leetcode 链表&二叉树刷题总结
    Leetcode 动态规划刷题总结
    Leetcode [1312] 让字符串成为回文串的最少插入次数 动态规划
    Leetcode [234] 回文链表 回文 链表
    动态规划之 KMP 算法详解(转)
    Leetcode [99] 恢复二叉搜索树 二叉树
    统计代码行数
    二叉树遍历(递归、非递归、mirror)转
  • 原文地址:https://www.cnblogs.com/yangxq/p/3791682.html
Copyright © 2011-2022 走看看