【Cocos2dx网络通信(Http&Socket)编译到Android总结】编译加入curl关联lib与头文件等问题

简介:

本篇介绍在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编译环境不抱错,但是编译会出现此问题。

 解决方案:

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

?
1
2
#include "netdb.h"
#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,改变如下即可,指定到完整相对路径即可:

?
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,基本这些足够解决问题的啦~





本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/969955,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
238 1
|
13天前
|
存储 网络安全
Curl error (60): SSL peer certificate or SSH remote key was not OK for https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/x86_64/repodata/repomd.xml [SSL: no alternative certificate subject name matches target host name 'update.cs2c.com.cn']
【10月更文挑战第30天】在尝试从麒麟软件仓库(ks10-adv-os)下载元数据时,遇到 SSL 证书验证问题。错误提示为:`Curl error (60): SSL peer certificate or SSH remote key was not OK`。可能原因包括证书不被信任、证书与域名不匹配或网络问题。解决方法包括检查网络连接、导入 SSL 证书、禁用 SSL 证书验证(不推荐)、联系仓库管理员、检查系统时间和尝试其他镜像。
38 1
|
30天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
82 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
1月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
1月前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
3月前
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
131 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
Datanode的日志中看到: 10/12/14 20:10:31 INFO hdfs.DFSClient: Could not obtain block blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.
693 0
|
Web App开发 Apache
|
Web App开发 前端开发 关系型数据库
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
mysql修改表、字段、库的字符集 修改数据库字符集: ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE .
709 0

热门文章

最新文章