`
shuai1234
  • 浏览: 972389 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

【Cocos2dx通信(Http&Socket)相关编译到Android细节总结】编译加入curl关联lib与头文件 && 解决pthread的cancel函数

 
阅读更多

本站文章均为 李华明Himi 原创,转载务必在明显处注明:
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/881.html

          ☞ 点击订阅 ☜
 本博客最新动态!及时将最新博文通知您!

 

本篇介绍在Cocos2dx中加入网络通信相关代码,然后编译到Android时出现的一些细节和需要注意的地方总结。不多废话了,直接进入正题;

   1.  首先介绍在Cocos2dx中使用pthread编译时应注意:

由于NDK明确指明不支持 pthread_cancel() 函数,编译的错误提示如下:

解决方案:

使用 pthread_kill()  或者 return NULL; 两种方法进行解决。

其中的区别如下:

pthread_exit() : 可以指定返回值,以便其他线程通过 pthread_join()   函数获取该线程的返回值;

return:  在线程函数中使用 return,会退出线程;

这里Himi推荐使用 return ,直接 return NULL;

 

 

  2. 编译提示找不到 sockaddr_in   与 htons等定义,错误提示如下:

出现此类问题,主要是头文件没有加入,虽然在ios编译环境不抱错,但是编译会出现此问题。

 解决方案:

在使用这些函数的类中,加入如下两个头文件:

 

[cpp] view plaincopy
 
  1. #include "netdb.h"  
  2. #include "netinet/in.h"  



 

3. Curl.h 头文件找不到注意,这里是编译出现头文件找不到的问题,如果你是xcode编译找不到头文件请参考如下博文:(这里讲解的是在ndk编译android过程中出现此类问题的解决办法

【C/S通信交互之Http篇】Cocos2dx(Client)使用Curl与Jetty(Server)实现手机网游Http通信框架(内含解决curl.h头文件找不到问题)

先观察错误的日志:

解决方案:

在你使用curl的类中,虽然导入了curl类,那么你肯定是include “curl/curl.h”导入的吧!OK,改变如下即可,指定到完整相对路径即可:

 

[cpp] view plaincopy
 
  1. "../../libs/cocos2dx/platform/third_party/ios/curl/curl.h"  

 

 

4. 有时候编译报错,错误提示说 curl_global_init 、curl_easy_init、curl_easy_setopt等没有定义undefined !这个问题是因为没有加入curl关联lib包;错误提示如下:

    解决方案:

修改jni下的helloworld下的.mk文件,整个路径如下:

your project//android/jni/helloworld/Android.mk

打开整个mk文件,找到如下内容:

修改成如下内容:

其实就是添加了两句话!但是要注意!

你仔细看添加的第一句下面一句中间的符号,之前是 “  :=  ”现在是 “+=”  一定要注意,这个问题困扰Himi好几个小时 = =。

 OK,基本这些足够解决问题的啦~

从下一篇开始Himi将开始写 mac平台下的编辑器开发系列文章哦

 

分享到:
评论

相关推荐

    cocos2dx 编译到 android

    cocos2dx 编译到 android cocos2dx 是一个跨平台的游戏引擎,它支持多种平台,包括 Android、iOS、Windows 等。为了将 cocos2dx 编译到 Android 平台,需要进行以下步骤: 首先,需要安装 Eclipse、SDK 和 NDK。...

    android项目中嵌入cocos2dx项目demo

    - 通过JNI(Java Native Interface)技术,Cocos2dx可以与Android的Java层进行通信,实现原生功能的调用。 2. **创建Cocos2dx项目** - 使用Cocos2dx命令行工具创建一个新的项目,如`cocos new HelloWorld -p ...

    cocos2dx android编译java文件

    总结来说,Cocos2dx在Android上的编译涉及C++和Java两部分,需要理解JNI原理,熟悉Android应用的生命周期,并掌握如何使用Cocos2d-x提供的Java接口来与C++代码交互。正确配置和理解这些知识点将有助于顺利地在...

    cocos2dx3.x使用socket创建服务端和客户端

    《Cocos2dx3.x中Socket的运用:构建服务端与客户端》 在游戏开发领域,Cocos2d-x是一个广泛使用的开源游戏引擎,尤其在跨平台开发中表现出色。而网络通信是许多游戏功能的核心,如多人在线、实时对战等。Cocos2d-x...

    Cocos2dx-js android项目中.jsc文件反编译软件

    第一步:打开apk文件的lib目录下libcocos2djs.so文件,用编辑器utf-b模式打开,搜索jsc文件,关键词:Cocos Game 紧接着的 22040xxx-xxx-xx就是密码 第二步:使用cmd命令,decrypt -pw 22040xxx-xxx-xx -f C:\tt\...

    基于Cocos2dx-3.8&C++开发的雷霆战机小游戏

    【作品名称】:基于Cocos2dx-3.8&C++开发的雷霆战机小游戏 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 一款简单...

    cocos2dx 工具之CocosBuilder

    《Cocos2dx工具解析:聚焦CocosBuilder》 Cocos2dx是一个广泛使用的开源游戏开发框架,基于C++,支持跨平台的游戏开发,适用于iOS、Android、Windows等多个平台。在Cocos2dx的生态系统中,有一系列强大的辅助工具,...

    将Cocos2dx从win32移植到android平台 不用cygwin

    总结,从Win32移植Cocos2d-x项目到Android平台并不复杂,关键在于理解两个平台之间的差异,正确配置环境,调整项目设置,并解决可能出现的兼容性问题。通过这个过程,开发者可以学习到跨平台开发的基本技巧,这对于...

    使用Cocos2dx-3.8&C++开发的雷霆战机小游戏.zip

    【Cocos2dx-3.8与C++开发雷霆战机小游戏】 Cocos2d-x是一个开源的游戏开发框架,广泛应用于2D游戏、图形界面应用程序和其他交互式项目。在这个项目中,开发者选择了Cocos2dx的3.8版本,这是一个基于C++的版本,提供...

    cocos2dx-2.x播放mp4

    2. **配置和编译FFmpeg**:根据你的平台(iOS, Android, Windows等)配置FFmpeg,确保编译出适合Cocos2dx的静态库。 3. **添加库到Cocos2dx项目**:将编译好的库文件添加到项目的链接器设置中,这样Cocos2dx就可以...

    curl编译cocos2dx不通过

    ios编译COCOS2DX时,有些版本会出现以下错误,'__curl_rule_01__' declared as an array with a negative size 只需把附件的CURL代码替换掉引擎的,再把SO库拉到工程中,即可解决这问题

    cocos2dx-js以so文件导入转化为Android工程,加快编译时间

    原本cocos游戏的android工程编译时,需要将cocos的库文件进行编译,这些文件大部分是cpp文件,使用ndk-build工具编译cpp文件非常慢,而且非常耗cpu,大概需要30-40分钟才能编译完成. 这个demo,可以把CocosCreator....

    cocos2dx2.1.4解决win32中文乱码编译自vs2012

    此代码在cocos2dx2.1.4下面编译有部分错误,我修改后,正常。 下下来后,请在VC++包含目录中链接(F:\cocos2d-x-2.1.4\cocos2dx\platform\win32;F:\cocos2d-x-2.1.4\cocos2dx\platform\third_party\win32\OGLES\GL\;...

    iconv cocos2dx android 库

    "iconv cocos2dx android 库"就是为了解决这个问题而存在的,它提供了一个跨平台的字符编码转换工具,使得在UTF-8和GBK之间进行转换变得简单。 Iconv是一个广泛使用的字符编码转换库,最初由GNU项目开发,现在已经...

    cocos2dx windows环境搭建

    - 为了让cocos2dx支持Android平台,通常需要安装Android NDK(Native Development Kit),它包含了一系列的开发工具,可以用来编译C或C++代码生成可在Android设备上运行的本地库。 以上就是cocos2dx在Windows环境...

    cocos2dx 游戏开发系列之三 源码

    《cocos2dx游戏开发系列之三:源码解析与Android工程构建》 在游戏开发领域,cocos2dx是一个广泛使用的开源游戏引擎,尤其在跨平台开发中扮演着重要角色。本篇将深入探讨cocos2dx游戏开发系列的第三部分——源码...

    Cocos2dx中UIWebView替换为WKWebView

    1. **升级Cocos2dx版本**:最理想的解决方案是将Cocos2dx升级到4.0及以上版本。Cocos2dx团队已经在4.0版本中修复了UIWebView的问题,因此,如果你的项目允许,推荐升级到最新稳定版本。这不仅可以解决UIWebView的弃...

    cocos2dx集成protobuf android版

    在Android平台上集成Cocos2dx与Protobuf,可以实现高效的数据交换和序列化,提升游戏性能。 首先,让我们详细了解一下如何在Cocos2dx项目中集成protobuf。这通常包括以下几个步骤: 1. **下载与安装protobuf**:你...

    cocos2dx android apk

    cocos2dx android cpp-tests 编译成功的apk文件(debug版) cocos2dx android 基本例子程序 编译成功的apk文件(debug版)

Global site tag (gtag.js) - Google Analytics