移植android ndk c++各种兼容性问题
2014-04-30 14:23
225 查看
http://blog.csdn.net/wenrenwang/article/details/9980753
__int64找不到符号
采用int64_t来代替:
#if defined(__ANDROID__)
typedef int64_t __int64;
#endif
<sys/io.h>找不到
android下不需要直接引用该文件,用下面的宏去掉即可
#if !defined(__APPLE__) && !defined(__ANDROID__)
#include <sys/io.h>
#endif
SO_NOSIGPIPE找不到
SO_NOSIGPIPE在mac中存在,可惜在android中不存在。请使用MSG_NOSIGNAL来代替
#if defined(__ANDROID__)
#define SO_NOSIGPIPE MSG_NOSIGNAL
#endif
uint64_t, int64_t, uint32_t, int32_t等类似类型找不到
请检查你的头文件包含,将系统的头文件放在自已的头文件之前。因为你自己的头文件有可以定义了重复的类型,导致系统头文件出错。
S_IREAD、S_IWRITE或者__S_IREAD、__S_IWRITE找不到
请用S_IRUSR、S_IWUSR代替
pthread_cancel找不到
这个android并未实现,有一些替代方法,具体见:http://bbs.rosoo.net/thread-10289-1-1.html
getifaddrs, <ifaddr.h> 找不到
android并没有实现。不过谢天谢地,有人已经帮我们实现了。感谢一下他:
https://github.com/kmackay/android-ifaddrs
<sys/statvfs.h>找不到
请用此来代替:
#if defined(__ANDROID__)
# include <sys/vfs.h>
# define statvfs statfs
#else
# include <sys/statvfs.h>
#endif
Android ndk c++加入stl支持
本人使用ndk r9,目前最新版的ndk. 加入stl支持的方法为:
在androi工程/jni目录下新建一个Application.mk,加入以下一行,就可以使用stl的多个库了。
[plain] view
plaincopy
APP_STL := stlport_static
之后重新编译ndk-build
再重新编译工程即可。
另外,stlport_static是使用stl静态库,也可以采用stlport_shared来使用.so,如果使用动态库,在java中需要先System.loadLibrary("stlport_shared")才能使用。
建议直接使用静态库即可。
__int64找不到符号
采用int64_t来代替:
#if defined(__ANDROID__)
typedef int64_t __int64;
#endif
<sys/io.h>找不到
android下不需要直接引用该文件,用下面的宏去掉即可
#if !defined(__APPLE__) && !defined(__ANDROID__)
#include <sys/io.h>
#endif
SO_NOSIGPIPE找不到
SO_NOSIGPIPE在mac中存在,可惜在android中不存在。请使用MSG_NOSIGNAL来代替
#if defined(__ANDROID__)
#define SO_NOSIGPIPE MSG_NOSIGNAL
#endif
uint64_t, int64_t, uint32_t, int32_t等类似类型找不到
请检查你的头文件包含,将系统的头文件放在自已的头文件之前。因为你自己的头文件有可以定义了重复的类型,导致系统头文件出错。
S_IREAD、S_IWRITE或者__S_IREAD、__S_IWRITE找不到
请用S_IRUSR、S_IWUSR代替
pthread_cancel找不到
这个android并未实现,有一些替代方法,具体见:http://bbs.rosoo.net/thread-10289-1-1.html
getifaddrs, <ifaddr.h> 找不到
android并没有实现。不过谢天谢地,有人已经帮我们实现了。感谢一下他:
https://github.com/kmackay/android-ifaddrs
<sys/statvfs.h>找不到
请用此来代替:
#if defined(__ANDROID__)
# include <sys/vfs.h>
# define statvfs statfs
#else
# include <sys/statvfs.h>
#endif
Android ndk c++加入stl支持
本人使用ndk r9,目前最新版的ndk. 加入stl支持的方法为:
在androi工程/jni目录下新建一个Application.mk,加入以下一行,就可以使用stl的多个库了。
[plain] view
plaincopy
APP_STL := stlport_static
之后重新编译ndk-build
再重新编译工程即可。
另外,stlport_static是使用stl静态库,也可以采用stlport_shared来使用.so,如果使用动态库,在java中需要先System.loadLibrary("stlport_shared")才能使用。
建议直接使用静态库即可。
相关文章推荐
- 移植android ndk c++各种兼容性问题
- 移植android ndk c++各种兼容性问题
- Android--移植android ndk c++各种兼容性问题
- Android 各种按钮点击效果以及兼容性问题总结
- vs2013 在win7下,使用c++创建项目各种报错问题解决方案
- C++各种基本问题
- 使用 Android NDK 的交叉编译工具链移植 C/C++ 项目到安卓平台
- [C/C++] 各种C/C++编译器对UTF-8源码文件的兼容性测试(VC、GCC、BCB)
- C/C++ 32位机器和64位机器 差异问题总结 跨平台 移植问题 语言编程需要注意的64位和32机器的区别
- js和浏览器的各种兼容性问题
- C++中遇到的各种小问题
- WIN7 + VS2013 使用c++创建项目各种报错问题解决方案
- 手游:cocos2d-x3.0 移植 wp8 开发 各种 “蛋疼”问题的汇总
- Android NDK学习(7)NDK测试时遇到的问题:C与C++互相调用
- [泛读]C++程序跨平台、多线程支持和x64移植问题
- ndk 编译 c++ 兼容性问题汇总整理
- C++重载与重写的各种问题
- Android NDK 中C/C++ 代码java.lang.UnsatisfiedLinkError , Native method not found 问题
- c#调用c++编译的dll的移植问题
- Android 各种按钮点击效果以及兼容性问题总结