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服务器成功!
Mac下编译libpomelo静态库,并在cocos2dx项目中引用的更多相关文章
- VS2015——命令行下编译、静态库动态库制作以及断点调试
c程序编译流程 程序的基本流程如图: 1. 预处理 预处理相当于根据预处理指令组装新的C/C++程序.经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的 ...
- 在Windows 环境下编译Qt静态库(QT5.32)
参考链接 Qt5.3 Tools and Versions MinGW ICU ActivePerl Qt 安装MinGW工具链环境 这里在Win32环境下要安装一个MinGW工具链,这里最好是先安装 ...
- 使用CMake在Linux下编译tinyxml静态库
环境:CentOS6.6+tinyxml_2_6_21.下载并解压tinyxml_2_6_2.zip unzip tinyxml_2_6_2.zip 2.在tinyxml文件夹里创建一个CMakeLi ...
- macox下编译snappy静态库
源代码地址:https://github.com/google/snappy 下载 git clone https://github.com/google/snappy 编译 进入snappy源代码文 ...
- MAC 下将libpomelo连接到cocos2d-x
摘要:借助GYP将libpomelo连接到Cocos2d-x项目并使项目能与服务端成功连接. 配置:OS X 10.9.4 + Xcode 6.0 + Cocos2d-x-3.2 一.部署GYP(Ge ...
- 使用CMake编译跨平台静态库
在开始介绍如何使用CMake编译跨平台的静态库之前,先讲讲我在没有使用CMake之前所趟过的坑.因为很多开源的程序,比如png,都是自带编译脚本的.我们可以使用下列脚本来进行编译: . / con ...
- 如何在WINDOWS下编译BOOST C++库 .
如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25 写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0. 1)下载boost ...
- dlib编译成静态库及被其它程序调用
一.git下载:https://github.com/davisking/dlib 官网:http://dlib.net/ 二.vs中编译成静态库 1.在vs2015中创建静态库工程(vs2015以上 ...
- 【转】iOS编译OpenSSL静态库(使用脚本自动编译)
原文网址:https://www.jianshu.com/p/651513cab181 本篇文章为大家推荐两个脚本,用来iOS系统下编译OpenSSL通用库,如果想了解编译具体过程,请参看<iO ...
随机推荐
- IT兄弟连 HTML5教程 DIV+CSS网页标准化布局的优势
标准的网页都需要对内容进行布局,以前都是采用表格的定位技术,从2005年开始逐步转向DIV+CSS的布局方式,目前绝大多数的网站都是采用这种布局方式.使用DIV+CSS对网站进行布局符合W3C标准,采 ...
- Node.js / Python 日志
一.Node.js 日志 1.原生 Node.js 原生方法其实很简单,就四个: // 输出到 stdout console.log() console.info() = console.log() ...
- 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU启动那些事(1)- Boot简介
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的BootROM功能简介. 截止目前为止i.MX RTyyyy系列已公布的芯片有三款i.MXRT ...
- 大部分人都会忽略的Python易错点总结
python中复数实现(-2) 0.5和开根号sqrt(-2)的区别** (-2)**0.5和sqrt(-2)是不同的,前者是复数后者是会报错的. print((-2)**0.5) #输出:(8.65 ...
- jQuery总结01_jq的基本概念+选择器
jQuery基本概念 学习目标:学会如何使用jQuery,掌握jQuery的常用api,能够使用jQuery实现常见的效果. 为什么要学习jQuery? [01-让div显示与设置内容.html] 使 ...
- android sdk tools里找不到draw9patch.bat 如何制作.9.png 格式图片
1.什么是.9.png格式 .9.png格式的图片可以在安卓平台指定拉伸区域,防止图片失真,一般用作背景图. 2.前提 最近项目中要用到.9.png格式图片,想着这个简单使用draw9patch.ba ...
- linux 执行 javac 报错 javac: command not found
bash: javac: command not found java 版本 1.8 [root@localhost home]# java -version openjdk version &quo ...
- WASM 成为 HTML、CSS 与 JS 之后的第 4 门 Web 语言
大家都知道,万维网联盟 W3C 认证的 Web 语言有 HTML.CSS 与 JavaScript,而近日联盟正式宣布 WebAssembly 核心规范(WebAssembly Core Specif ...
- 【西北师大-2108Java】第十次作业成绩汇总
[西北师大-2108Java]第十次作业成绩汇总 作业题目 面向对象程序设计(JAVA) 第12周学习指导及要求 实验目的与要求 (1)掌握Vetor.Stack.Hashtable三个类的用途及常用 ...
- 学习java需要英语很好吗?
学习java需要英语很好吗? 编程语言起源于美国,是由英文构成的,其中包括几十个英文的关键字以及几百个英文的函数,除非需要对文本进行处理,否则一般不会出现中文.但是,它们都是孤立的单词,不构成任何语句 ...