【Cocos2dx通信(Http&Socket)相关编译到Android细节总结】编译加入curl关联lib与头文件 && 解决pthread的cancel函数NDK不支持,找不到sockaddr_i
2013-10-15 22:26
417 查看
本站文章均为 李华明Himi 原创,转载务必在明显处注明:
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/881.html
☞
点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!
本篇介绍在Cocos2dx中加入网络通信相关代码,然后编译到Android时出现的一些细节和需要注意的地方总结。不多废话了,直接进入正题;
1. 首先介绍在Cocos2dx中使用pthread编译时应注意:
由于NDK明确指明不支持 pthread_cancel() 函数,编译的错误提示如下:
![](http://www.himigame.com/wp-content/uploads/2012/06/3.png)
解决方案:
使用 pthread_kill() 或者 return NULL; 两种方法进行解决。
其中的区别如下:
pthread_exit() : 可以指定返回值,以便其他线程通过 pthread_join() 函数获取该线程的返回值;
return: 在线程函数中使用 return,会退出线程;
这里Himi推荐使用 return ,直接 return NULL;
2. 编译提示找不到 sockaddr_in 与 htons等定义,错误提示如下:
![](http://www.himigame.com/wp-content/uploads/2012/06/2.png)
出现此类问题,主要是头文件没有加入,虽然在ios编译环境不抱错,但是编译会出现此问题。
解决方案:
在使用这些函数的类中,加入如下两个头文件:
[cpp]
view plaincopyprint?
#include "netdb.h"
#include "netinet/in.h"
3.
Curl.h 头文件找不到。注意,这里是编译出现头文件找不到的问题,如果你是xcode编译找不到头文件请参考如下博文:(这里讲解的是在ndk编译android过程中出现此类问题的解决办法)
【C/S通信交互之Http篇】Cocos2dx(Client)使用Curl与Jetty(Server)实现手机网游Http通信框架(内含解决curl.h头文件找不到问题)
先观察错误的日志:
![](http://www.himigame.com/wp-content/uploads/2012/06/1.png)
解决方案:
在你使用curl的类中,虽然导入了curl类,那么你肯定是include “curl/curl.h”导入的吧!OK,改变如下即可,指定到完整相对路径即可:
[cpp]
view plaincopyprint?
"../../libs/cocos2dx/platform/third_party/ios/curl/curl.h"
4.
有时候编译报错,错误提示说 curl_global_init 、curl_easy_init、curl_easy_setopt等没有定义undefined !这个问题是因为没有加入curl关联lib包;错误提示如下:
![](http://www.himigame.com/wp-content/uploads/2012/06/31.png)
解决方案:
修改jni下的helloworld下的.mk文件,整个路径如下:
your project//android/jni/helloworld/Android.mk
打开整个mk文件,找到如下内容:
![](http://www.himigame.com/wp-content/uploads/2012/06/1231.png)
修改成如下内容:
![](http://www.himigame.com/wp-content/uploads/2012/06/321.png)
其实就是添加了两句话!但是要注意!
你仔细看添加的第一句下面一句中间的符号,之前是
“ := ”现在是
“+=”
一定要注意,这个问题困扰Himi好几个小时 = =。
OK,基本这些足够解决问题的啦~
从下一篇开始Himi将开始写 mac平台下的编辑器开发系列文章哦~
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/881.html
☞
点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!
本篇介绍在Cocos2dx中加入网络通信相关代码,然后编译到Android时出现的一些细节和需要注意的地方总结。不多废话了,直接进入正题;
1. 首先介绍在Cocos2dx中使用pthread编译时应注意:
由于NDK明确指明不支持 pthread_cancel() 函数,编译的错误提示如下:
![](http://www.himigame.com/wp-content/uploads/2012/06/3.png)
解决方案:
使用 pthread_kill() 或者 return NULL; 两种方法进行解决。
其中的区别如下:
pthread_exit() : 可以指定返回值,以便其他线程通过 pthread_join() 函数获取该线程的返回值;
return: 在线程函数中使用 return,会退出线程;
这里Himi推荐使用 return ,直接 return NULL;
2. 编译提示找不到 sockaddr_in 与 htons等定义,错误提示如下:
![](http://www.himigame.com/wp-content/uploads/2012/06/2.png)
出现此类问题,主要是头文件没有加入,虽然在ios编译环境不抱错,但是编译会出现此问题。
解决方案:
在使用这些函数的类中,加入如下两个头文件:
[cpp]
view plaincopyprint?
#include "netdb.h"
#include "netinet/in.h"
#include "netdb.h" #include "netinet/in.h"
3.
Curl.h 头文件找不到。注意,这里是编译出现头文件找不到的问题,如果你是xcode编译找不到头文件请参考如下博文:(这里讲解的是在ndk编译android过程中出现此类问题的解决办法)
【C/S通信交互之Http篇】Cocos2dx(Client)使用Curl与Jetty(Server)实现手机网游Http通信框架(内含解决curl.h头文件找不到问题)
先观察错误的日志:
![](http://www.himigame.com/wp-content/uploads/2012/06/1.png)
解决方案:
在你使用curl的类中,虽然导入了curl类,那么你肯定是include “curl/curl.h”导入的吧!OK,改变如下即可,指定到完整相对路径即可:
[cpp]
view plaincopyprint?
"../../libs/cocos2dx/platform/third_party/ios/curl/curl.h"
"../../libs/cocos2dx/platform/third_party/ios/curl/curl.h"
4.
有时候编译报错,错误提示说 curl_global_init 、curl_easy_init、curl_easy_setopt等没有定义undefined !这个问题是因为没有加入curl关联lib包;错误提示如下:
![](http://www.himigame.com/wp-content/uploads/2012/06/31.png)
解决方案:
修改jni下的helloworld下的.mk文件,整个路径如下:
your project//android/jni/helloworld/Android.mk
打开整个mk文件,找到如下内容:
![](http://www.himigame.com/wp-content/uploads/2012/06/1231.png)
修改成如下内容:
![](http://www.himigame.com/wp-content/uploads/2012/06/321.png)
其实就是添加了两句话!但是要注意!
你仔细看添加的第一句下面一句中间的符号,之前是
“ := ”现在是
“+=”
一定要注意,这个问题困扰Himi好几个小时 = =。
OK,基本这些足够解决问题的啦~
从下一篇开始Himi将开始写 mac平台下的编辑器开发系列文章哦~
相关文章推荐
- 【Cocos2dx通信(Http&Socket)相关编译到Android细节总结】编译加入curl关联lib与头文件 && 解决pthread的cancel函数NDK不支持,找不到sockaddr_i
- Cocos2dx通信(Http&Socket)相关编译到Android细节总结 编译加入curl关联lib与头文件 && 解决pthread的cancel函数NDK不支持,找不到sockaddr_in
- 【Cocos2dx通信(Http&Socket)相关编译到Android细节总结】编译加入curl关联lib与头文件 && 解决pthread的cancel函数NDK不支持,找不到sockaddr_i
- 【Cocos2dx通信(Http&Socket)相关编译到Android细节总结】编译加入curl关联lib与头文件 && 解决pthread的cancel函数NDK不支持,找不到sockaddr_i
- 相关编译到Android细节总结 编译加入curl关联lib与头文件 && 解决pthread的cancel函数NDK不支持,找不到sockaddr_i
- 【Cocos2dx网络通信(Http&Socket)编译到Android总结】编译加入curl关联lib与头文件等问题
- Cocos2dx通信(Http&Socket)相关编译到Android细节总结
- 解决android-ndk-r8c 编译所有文件问题
- 解决ndk-build编译C++库时找不到各种头文件文件
- Android 4.1源码编译找不到资源文件解决办法
- Android 4.1源码编译找不到资源文件解决办法
- 解决cygwin上编译boost for android 的thread库找不到"process.h"
- 使用ASIHTTPRequest 编译提示找不到"libxml/HTMLparser.h"的解决方法
- Android驱动开发【NDK模型】———NDK程序设计之产生头文件出现找不到appcompat-v7的错误解决办法
- 【C/S通信交互之Http篇】Cocos2dx(Client)使用Curl与Jetty(Server)实现手机网游Http通信框架(内含解决curl.h头文件找不到问题)
- android上Bionic不支持pthread_cancel等函数
- 解决Visual Studio编译出现Moc'ing文件,系统找不到指定路径问题
- 使用ASIHTTPRequest 编译提示找不到"libxml/HTMLparser.h"的解决方法
- 【C/S通信交互之Http篇】Cocos2dx(Client)使用Curl与Jetty(Server)实现手机网游Http通信框架(内含解决curl.h头文件找不到问题)
- 解决android-ndk-r8c 总是编译所有文件问题