【COCOS2DX通信(HTTP&SOCKET)相关编译到ANDROID细节总结】编译加入CURL关联LIB与头文件 && 解决PTHREAD的CANCEL函数NDK不支持,找不到SOCKADDR_IN、HTONS等问题;

本站文章均为 李华明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编译环境不抱错,但是编译会出现此问题。

 解决方案:

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

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

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

时间: 2024-12-20 22:19:57

【COCOS2DX通信(HTTP&SOCKET)相关编译到ANDROID细节总结】编译加入CURL关联LIB与头文件 && 解决PTHREAD的CANCEL函数NDK不支持,找不到SOCKADDR_IN、HTONS等问题;的相关文章

c++ 编程问题-c++与java通信(socket TCP)c++用的默认的编码,java用的UTF-8 怎么解决中文乱码问题

问题描述 c++与java通信(socket TCP)c++用的默认的编码,java用的UTF-8 怎么解决中文乱码问题 c++代码如下,谁可以试着尝试一下,谢谢 #include #include #include #pragma comment(lib,"ws2_32.lib") void main() { //创建套接字 WORD myVersionRequest; WSADATA wsaData; myVersionRequest=MAKEWORD(1,1); int err;

编译-使用TIdStringStream ,在哪里定义的,需要什么头文件?

问题描述 使用TIdStringStream ,在哪里定义的,需要什么头文件? 在c++build6中,安装了indy10.但在使用TIdStringStream时,编译出现错误:[C++ Error] Undefined symbol 'TIdStringStream'.

(一〇九)单独编译(多个源代码文件和头文件)

单独编译的简单原理: C++在内存中储存数据提供了多种选择.   可以选择数据保留在内存中的时间长度(存储持续性)以及程序的哪一部分可以访问数据(作用域和链接)等.可以使用new来动态地分配内存,而定位new运算符提供了这种技术的一种变种.C++名称空间是另一种控制访问权的方式.   通常,大型程序都由多个源代码文件组成,这些文件可能共享一些数据.这样的程序涉及到文件的单独编译.     ----***一〇九谈的是单独编译***一一〇谈的是存储***------   和C语言一样,C++也允许,

关于头文件是否参与编译的讨论

一.文章来由 写项目的时候发现了这个问题,又是一个比较底层的问题,首先说明,这篇文章只是我根据查阅的资料和做的实验提出的一个讨论,并不一定就是正确答案.因为这个问题网上众说纷纭,我很欢迎大家参与这个讨论,一起搞懂这个问题~~~ 二.问题的提出 问题就是... 2.1 问题1(主问题): 头文件是否真正参与编译? 先上一个网上的标准答案: .h的内容被插入到.c中,作为.c的内容被编译..h文件本身不直接参加编译. 据我理解,这句话就是说明了头文件不直接参与编译,是作为一个插入来理解. 也就是说:

mfc单文档显示-对话框头文件的编译问题

问题描述 对话框头文件的编译问题 问:? 100 问:? 100 在编译和链接时,总是出现一行错误,说头文件"InputDlg.h"是:No such file or directory....求大神解释一下,这是怎么回事,怎么修改啊?? 解决方案 C++头文件编译问题C++头文件编译问题c++中的预编译头文件问题

C++头文件编译问题

一.C++编译模式 通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C++的源代码. C+ +语言支持"分别编译"(separate compilation).也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里..cpp文件里的东西都是相对独立的,在编 译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目

【COCOS2DX-LUA 脚本开发之十三】解决COCOS2DX-LUA编译到ANDROID找不到CCLUAENGINE、HELLOWORLD或出现GET DATA FROM FILE(XXX.LUA) FAILED/CAN NOT GET FILE DATA OF XXX.LUA、COCOS2DX

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/lua-game/1368.html 对于跨平台整合,Himi已经写了1.x 与 2.x 的了,还不知道如何整合的请移步到 [Cocos2d-X(2.x) 游戏开发系列之二]cocos2dx最新2.x版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行即可!) 本篇只是解决在整合cocos2dx-lua项目会

qt-Qt5 怎样 把 串口通信 程序 编译到Android 平台上 使用 ?

问题描述 Qt5 怎样 把 串口通信 程序 编译到Android 平台上 使用 ? 如题.Qt5 怎样 把 串口通信 程序 编译到Android 平台上 使用 ?现在编好了PC版,但是怎么编译到Android上,似乎有各种不兼容. 解决方案 应该主要是串口库的问题.java中的串口通讯是通过非标准库实现的,所以,很明显需要根据采用的库.平台进行部署.在android上使用,首先需要库的linux版本,然后还需要是for ARM的.

【COCOS2D-X(2.X) 游戏开发系列之二】COCOS2DX最新2.X版本跨平台整合NDK+XCODE,XCODE编写&编译代码,ANDROID导入打包运行即可!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos2dx-v2-0/962.html 前段时间有事情不在北京也很少上网所以一直没有更新博客,那么今天Himi向大家分享一下最新cocos2dx 2.0.1版本整合Xcode 编译运行Android的博文: 首先Himi使用的引擎版本是cocos2dx 2.0: 主要特点: 使用opengl es2.0支持CocosBuilder集成了